Ich habe eine Analyse, die über eine andere Anzahl von Prozessen parallelisiert werden kann. Es wird erwartet, dass die Dinge sowohl IO- als auch CPU-intensiv sind (DNA-Alignment mit sehr hohem Durchsatz, wenn jemand neugierig ist.)Wird ein IO-blockierter Prozess eine 100% ige CPU-Auslastung in der "obersten" Ausgabe anzeigen?
Das System, das dies ausführt, ist ein 48-Kern-Linux-Server.
Die Frage ist, wie man die optimale Anzahl von Prozessen so bestimmt, dass der Gesamtdurchsatz maximiert wird. An einem gewissen Punkt werden die Prozesse vermutlich IO-gebunden, so dass das Hinzufügen von mehr Prozessen keinen Nutzen bringt und möglicherweise schädlich ist.
Kann ich von den Standard-Systemüberwachungstools sagen, wann dieser Punkt erreicht wurde? Würde die Ausgabe von top (oder einem anderen Tool) es mir ermöglichen, zwischen einem IO-gebundenen und einem CPU-gebundenen Prozess zu unterscheiden? Ich bin verdächtig, dass ein Prozess, der auf IO blockiert wird, immer noch 100% CPU-Auslastung anzeigt.
Im Allgemeinen sollte die Anzahl der nicht blockierten Threads der Anzahl der Prozessoren entsprechen. Ist es möglich, nicht blockierende IO zu verwenden? Es kann Dinge vereinfachen, wenn Sie es in Ihre Architektur integrieren können. –