Ist memcached in der Lage, Multi-Core vollständig zu nutzen? Oder kann man das irgendwie tun?Kann Memcached Multi-Core voll nutzen?
Antwort
memcached ist standardmäßig multi-threaded und hat kein Problem, viele Cores zu sättigen. Es ist ein bisschen schwieriger, alle Kerne auf massiveren parallelen Boxen (z. B. einer 256-Kern-CMT-Box) zu sättigen, nur weil es schwieriger wird, die Daten in das Netzwerk hinein und aus ihm heraus zu bekommen.
Wenn Sie Bereiche finden, in denen eine Art von Konkurrenz Sie daran hindert, Kerne zu sättigen, einen Fehler zu melden oder eine Diskussion zu beginnen.
Memcached hat "-t" Option:
-t <threads>
Number of threads to use to process incoming requests. This option is only meaningful
if memcached was compiled with thread support enabled. It is typically not useful to
set this higher than the number of CPU cores on the memcached server. The default is
4.
so, ich glaube, dass es alle Ihre CPU-Kerne nutzen können, natürlich, wenn sie mit entsprechenden Option kompiliert wurde.
VORSICHTIG. Diese Terminologie ist ziemlich verwirrend. Memcached-Man-Seite sagt -t-Option ist nur bis zur Anzahl der Kerne gut. Dies ist jedoch seltsam, da Threads und Prozesse sehr unterschiedlich sind. Threads haben nichts mit der Anzahl der Kerne zu tun. Prozesse können definitiv auf mehr als einer Cor laufen, während Threads nicht können (wenn sie nicht zu einer OS-Routine aufrufen, dann können sie Switch und Pack in mehr als 100% CPU-Nutzung einbinden). Threads teilen sich den Speicher und hängen nur von einem Befehlszeiger ab, um zu unterscheiden wer wer ist. Prozesse teilen nichts, es sei denn, es wird explizit als früher freigegeben erklärt, und die Freigabe erfolgt über das Betriebssystem.
Insgesamt möchte ich mehr CLARITY von den Memcached Menschen darüber, ob ihre App Multiprocessing oder Multithread ist und somit, wenn es mehr als 100% der CPU verwenden kann.
[Themen haben nichts mit der Anzahl der Kerne zu tun] Der Grund, warum seine sagt zu setzen Ihre Anzahl der Threads Die Anzahl der Kerne ist so groß, dass Sie im Allgemeinen einen Kern haben möchten, der einen bestimmten Thread ausführt. Mehr als das, dann muss die CPU Kontext zwischen Threads wechseln, was die Leistung in verschiedenen Graden beeinflusst, je nachdem, was Sie versuchen zu tun – concept47
Basierend auf einer this Forschung von Intel, kann Memcached v.1.6 beta nicht gut auf einem Multicore-System skalieren. Ihre Experimente zeigen, dass sich der maximale Durchsatz (mit einem mittleren RTT < 1ms SLA) nur verdoppelt, wenn die Kernzahlen von 1 auf 8 ansteigen.
Vielen Dank ~ –
bitte die Antwort als ‚akzeptiert‘ markieren, wenn es nützlich für dich war –