2009-10-05 1 views
2

У меня многопоточное приложение (C++ и pthread library), и мне будет интересно узнать, сколько ресурсов (процессор и память)) каждая нить использует. Есть ли способ узнать эти детали на Solaris и Linux как на любом из них.Поиск использования ресурсов (процессор и память) потоками процесса в unix (solaris/linux)

+0

Для Linux есть точная копия (http://stackoverflow.com/questions/1431569/tracking-threads-memory-and-cpu-consumption). –

+0

Я проверил это заранее. Мой вопрос был также для Solaris. Еще ничего не нашли. Единственное, что я могу заключить сейчас, это то, что разговоры о потреблении памяти в потоке не являются хорошей идеей, поскольку они используют одно и то же пространство памяти. Может быть, мы можем только вычислить, какая память была выделена или освобождена потоком (как это сделать?). – mkamthan

ответ

6

Вы можете использовать команду рз с некоторой опцией:

 
ps -eLo pid,ppid,lwp,nlwp,osz,rss,ruser,pcpu,stime,etime,args | more 
    PID PPID LWP NLWP SZ RSS RUSER %CPU STIME  ELAPSED COMMAND 
    0  0  1 1 0 0  root 0.0 Oct_02 4-02:13:37 sched 
    1  0  1 1 298 528  root 0.0 Oct_02 4-02:13:36 /sbin/init 
    2  0  1 1 0 0  root 0.0 Oct_02 4-02:13:36 pageout 

Посмотрите на страницу PS человека, чтобы получить какую-то информацию (LWP (легкий процесс веса))

+0

Является ли LWP нитью? Я имею в виду под Linux/Solaris. Поскольку в том, что вы вставили здесь, PPID равен 0, я полагаю, что это его процесс, а не поток. Я прав? – mkamthan

+0

Да. LWP - это поток. http://www.theeggeadventure.com/wikimedia/index.php/What_is_NLWP_on_Solaris%3F – brianegge

+0

Насколько я могу судить - флаг pcpu дает использование ЦП для процесса, а не для LWP. – jasonk

 Смежные вопросы

  • Нет связанных вопросов^_^