Ich habe den folgenden Algorithmus, der Daten zu Azure Blob SpeicherWas ist die optimale Anzahl von laufenden Aufgaben?
private const long MaxChunkSize = 1024 * 1024 * 4; // 4MB
private void UploadPagedDataToBlob(...)
{
...
List<Task> list_of_tasks = new List<Task>();
do
{
var stream = new MemoryStream(data, index, (int)blockSize);
var task = _blob.WritePagesAsync(stream, startPosition, null);
list_of_tasks.Add(task);
...
}
while (remainingDataLength > 0);
Task.WaitAll(list_of_tasks.ToArray());
}
Wenn meine Dateigröße hat 628MB
=> dann list_of_tasks
hat 157
Aufgaben (628/MaxChunkSize) schreiben. Normalerweise habe ich mehr als 1 TB Datei. Ich möchte nicht so viele laufende Aufgaben haben, wie kann ich effizientere Algorithmen erstellen? Was ist die optimale Anzahl von laufenden Aufgaben? Zum Beispiel nicht mehr als 200, irgendwelche Empfehlungen?
Kommt drauf an. Ein entferntes System kann Verbindungen auf einer einzelnen CPU begrenzen, die Sie möglicherweise auf Kerne beschränken möchten, wenn es an die CPU gebunden ist. Wir wissen nicht, was "_blob" ist, also ist es schwer zu beantworten. Im Allgemeinen ist es besser, Parallel.For oder TPL DataFlow zu verwenden und TPL zu entscheiden, wie viele Aufgaben gleichzeitig ausgeführt werden sollen. –
Ich habe vor einiger Zeit eine ähnliche Frage beantwortet. Es kann hilfreich sein: http://stackoverflow.com/a/32252521/1835769 – displayName
Sie sind derjenige, der das Experiment durchführen kann, um die optimale Anzahl von Aufgaben für Ihr Szenario zu bestimmen, nicht wir. Entwerfe ein Experiment, führe es sorgfältig aus und du wirst die Antwort wissen. –