Я запускаю Java-программу на 12-ядерном компьютере с 24-мя потоками. У них есть несколько процессов, которые работают одновременно. Кажется, я выполнил слишком много процессов, поэтому целые задачи сделали машину очень медленной.
Вот верхняя информация
Tasks: 556 total, 2 running, 554 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.4%sy, 0.0%ni, 63.2%id, 36.3%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 16295248k total, 16169560k used, 125688k free, 3300k buffers
Swap: 18530296k total, 10867972k used, 7662324k free, 46188k cached
Кажется, что мои процессы ориентированы на потребление памяти, поэтому они использовали почти всю память. В верхней информации я не понимаю, почему вместо 23 выполняется только 2 задачи (я отправил 23 процесса).
free -g
total used free shared buffers cached
Mem: 15 15 0 0 0 0
-/+ buffers/cache: 15 0
Swap: 17 10 7
Кажется, что вся память была использована, и она менялась, что замедляло работу машины.
ps -e -o pid,%cpu,%mem,vsz,rss,comm= --sort=vsz
29707 5.6 4.2 6268732 685660 java
29712 5.2 3.9 6268732 647352 java
...
30269 3.2 4.3 6268732 704676 java
30334 4.8 4.2 6268732 689544 java
Есть 23 таких Java-процессов. Суммируя все% процессора, он очень близок к 100%. Но верхняя информация указывает на то, что процессор не занят.
Cpu(s): 0.1%us, 0.4%sy, 0.0%ni, 63.2%id, 36.3%wa, 0.0%hi, 0.0%si, 0.0%st
Я гуглил, какого размера vsz и rss, но не узнал. Я предполагаю, что блок в килобайтах. Смотря vsz, тогда процессы java используют 6268732kb * 23 = 144,180,836 = ~ 144 ГБ, что, кажется, невозможно поместить в ОЗУ, потому что оно намного больше, чем моя ОЗУ (16 ГБ), поэтому было помещено только 700000 КБ * 23 = ~ 16 ГБ. в память (с информацией rss, которая является частью хранилища данных в ОЗУ). Из-за частой перестановки и переключения контекста система замедлялась.
Я не знаю, мой вывод правильный или нет. Пожалуйста, дайте мне несколько советов и как я могу решить проблему.
Добавить более подробно:
vmstat -a -S M
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
2 29 16792 124 2105 13152 0 0 29 23 2 0 1 0 95 4 0
Я не знаю, как я должен интерпретировать данные vmstat. Это немного странно, потому что swpd: объем используемой виртуальной памяти выглядит высоким, а si и так равны 0.