Domanda

Sto cercando di rintracciare la causa dei colli di bottiglia delle prestazioni in un'applicazione di cui sto eseguendo il debug su Linux. I vari processi coinvolti sembrano impiegare molto tempo a bloccare le richieste di I / O, e mi chiedevo se qualcuno conoscesse qualche trucco di Linux che ti permettesse di vedere perché un particolare processo è bloccato / quale risorsa è aspettando? C'è qualcosa di utile in / proc per esempio?

È stato utile?

Soluzione

Qualunque sia il processo, si utilizza top per controllare lo stato. Quindi è possibile eseguirlo attraverso capriata o straccia . Ciò dovrebbe descrivere in dettaglio cosa sta succedendo. Se ciò non è possibile, collega esso fino a gdb . Strumenti come iostat potrebbero mostrarti in generale cosa sta succedendo (ad esempio se il disco è un collo di bottiglia) .

Altri suggerimenti

Puoi usare il comando strace per vedere cosa sta facendo il tuo processo. Potresti anche trovare utile eseguire lsof sul tuo processo per vedere quali file e socket sta utilizzando.

strace è tuo amico, perché puoi ottenere il tempo speso in ogni chiamata di sistema, inoltre puoi selezionare i descrittori di file e le chiamate di sistema che ti interessano. Ma puoi anche ottenere supporto dal kernel: dai un'occhiata a < a href = "http://www.latencytop.org/" rel = "noreferrer"> latencytop

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top