Какие процессы в свопе? (поле w в vmstat )

В выводе vmstat есть несколько полей, которые трудно интерпретировать.
Поле w – одни из них. Да, из мануала мы знаем, что это “the number of swapped out lightweight processes (LWPs) that are waiting for processing resources to finish.” Так и что же стоит делать если это значение не нулевое?
Чаще всего это значит что серверу не хватает оперативной памяти. Но что же делать если эта проблема решена, а значение так и не изменилось?

bash-3.2# vmstat 5                                                                              
kthr      memory            page            disk          faults     cpu
r b w   swap  free  re  mf pi po fr de sr s6 sd sd sd   in   sy   cs us sy id
0 0 84 5041144 290400 1  6  0  0  0 1176 0 0  0  0  7 4231  164  838  0 2 98                       
0 0 84 5041136 290456 0  0  0  0  0 376 0  0  0  0  0 4228  148  575  0 2 98
0 0 84 5041136 290456 0  0  0  0  0  0  0  0  0  0  0 4232  162  579  0 2 98
0 0 84 5041128 290448 0  0  0  0  0  0  0  0  0  0  0 4227  149  637  0 2 98

Для начала давайте посмотрим lwp каких процессов засвопились:

echo "::walk thread thr |::print kthread_t t_schedflag|::grep .==0 |::eval p_pidp->pid_id" | mdb -k

Или же сразу выведем команду :

echo "::walk thread thr |::print kthread_t t_schedflag|::grep .==0 |::eval p_user.u_comm" | mdb -k

Итак мы знаем lwp каких процессов до сих пор в свопе. И если это число в выводе vmstat не растёт, то и проблем на сервере, скорее всего, тоже нет, но почему-то для многих людей это поле как красная тряпка для быка. Для того, чтобы lwp процесса перешли в нормальное состояние надо чтобы они что-то выполнили. Для этого, например, некоторым приложениям можно послать SIGHUP. Но проще всего конечно-же просто запустить truss на это приложение. truss’у будут нужны некоторые данные о процессе, и тем самым он перейдет обратно, в нормальное состояние.

Leave a Reply

Your email address will not be published. Required fields are marked *