2013-10-02 12 views
5

Stiamo facendo dei buoni progressi nel test di carico e nel ridimensionamento di un'applicazione akka ma stiamo vedendo scala.concurrent.forkjoin.ForkJoinPool.scan() in arrivo come il secondo hotspot più alto circa il 20% del tempo di auto in VisualVM. La colonna Self time (CPU) dice solo una frazione di quello (meno dell'1% del valore della colonna self time).Akka - durante il test di carico, forkjoinpool.scan al 20% del tempo di CPU

Ho il sospetto che questo significa il blocco o il cambio di contesto sono potenzialmente problematici, ma io non sono troppo sicuro - uno può dare qualche idea? Se si tratta di cambio di contesto, suppongo che il tuning del throughput del dispatcher su un numero più elevato possa comportarci in netto guadagno, altrimenti, se è causato dal blocco, avremo bisogno di leggere di più il codice.

Qualsiasi intuizione molto apprezzata.

+1

vorrei leggere questa discussione in quanto fornisce alcune buone informazioni sul perché si potrebbe vedere un sacco di tempo di attesa occupato con il PLG. Si potrebbe effettivamente avere un codice di blocco che sta rallentando le cose causando la scansione dei thread FJP inattivi per lavoro più del previsto. https://groups.google.com/forum/m/#!topic/akka-user/6HKTvw4yBnU – cmbaxter

+0

Grazie - quel thread è ciò che mi ha spinto a pensare che ci devono essere alcuni thread parcheggiati - quello e il tempo dell'orologio a muro contro il CPU attuale utilizzata. Questa è un'affermazione utile +1 – JasonG

risposta

8

Il metodo di scansione è anche il luogo dove le discussioni inattive nei "parchi" ForkJoinPool quando non riescono a trovare lavoro.

Avere il 20% di self time e l'1% di quello come tempo della CPU autonoma mi fa pensare che ci siano thread inattivi nel ForkJoinPool che hanno parcheggiato lì.

Suppongo che si stia utilizzando VisualVM in modalità Sampling. Di default VisualVM filtra le cose nella libreria standard. Vedi questa risposta come cambiare le impostazioni e ottenere una migliore immagine di cosa sta succedendo. https://stackoverflow.com/a/16113781/1688542

+0

Ok, è fantastico - grazie mille. Proverò a riferire. – JasonG

+0

Sì, sì - scoprendo il sole. * Ha mostrato sun.misc.Unsafe.park stava mangiando la cpu. – JasonG

Problemi correlati