Назад | Перейти на главную страницу

Верхняя команда Linux. Использование памяти

Я тестирую свой веб-сервер с помощью Jmeter. Я запускаю тест для 40 пользователей, затем выгружаю верхнюю команду. Я вижу 40 (+1 хост) процессов apache. Каждый процесс использует ок. 7мб памяти RES. Но 7 * 40 - это 280 мб памяти. Но сверху видно, что всего 508 Мбайт и 345 Мбайт свободно. Итак, всего 163мб использовалось ... Почему у меня такие странные вещи?

top - 04:49:24 up 1 day, 10:49,  1 user,  load average: 0.28, 0.18, 0.16
Tasks: 107 total,   2 running, 105 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.4%us,  0.4%sy,  0.0%ni, 97.6%id,  0.5%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    508132k total,   162428k used,   345704k free,    28340k buffers
Swap:   916476k total,    21800k used,   894676k free,    63480k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
 9816 www-data  20   0 69232 7260 3232 S  1.9  1.4   0:00.69 apache2            
 9890 www-data  20   0 69232 7260 3232 S  1.9  1.4   0:00.06 apache2            
 9900 www-data  20   0 69232 7260 3232 S  1.9  1.4   0:00.04 apache2            
 9906 www-data  20   0 69232 7256 3232 S  1.9  1.4   0:00.04 apache2            
 9908 www-data  20   0 69232 7256 3232 S  1.9  1.4   0:00.06 apache2            
    1 root      20   0  2836  760  460 S  0.0  0.1   0:01.50 init               
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd           
    3 root      20   0     0    0    0 S  0.0  0.0   0:00.99 ksoftirqd/0        
    4 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0        
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0         
    6 root      20   0     0    0    0 S  0.0  0.0   0:04.20 events/0           
    7 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cpuset             
    8 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper            
    9 root      20   0     0    0    0 S  0.0  0.0   0:00.00 netns              
   10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 async/mgr          
   11 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pm                 
   12 root      20   0     0    0    0 S  0.0  0.0   0:00.45 sync_supers        
   13 root      20   0     0    0    0 S  0.0  0.0   0:00.62 bdi-default        
   14 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kintegrityd/0      
   15 root      20   0     0    0    0 S  0.0  0.0   0:05.89 kblockd/0          
   16 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kacpid             
   17 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kacpi_notify       
   18 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kacpi_hotplug      
   19 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ata_aux            
   20 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ata_sff/0          
   21 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khubd              
   22 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kseriod            
   23 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kmmcd              
   25 root      20   0     0    0    0 S  0.0  0.0   0:00.08 khungtaskd         
   26 root      20   0     0    0    0 S  0.0  0.0   0:08.30 kswapd0            
   27 root      25   5     0    0    0 S  0.0  0.0   0:00.00 ksmd               
   28 root      20   0     0    0    0 S  0.0  0.0   0:00.00 aio/0              
   29 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ecryptfs-kthrea    
   30 root      20   0     0    0    0 S  0.0  0.0   0:00.00 crypto/0           
   35 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pciehpd            
   37 root      20   0     0    0    0 S  0.0  0.0   0:00.00 scsi_eh_0          
   38 root      20   0     0    0    0 S  0.0  0.0   0:00.02 scsi_eh_1          
   41 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kstriped           
   42 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kmpathd/0          
   43 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kmpath_handlerd    
   44 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ksnapd             
   45 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kondemand/0        
   46 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kconservative/0    
  239 root      20   0     0    0    0 S  0.0  0.0   0:03.95 mpt_poll_0         
  240 root      20   0     0    0    0 S  0.0  0.0   0:00.00 mpt/0              
  241 root      20   0     0    0    0 S  0.0  0.0   0:00.00 scsi_eh_2          
  258 root      20   0     0    0    0 S  0.0  0.0   0:05.60 jbd2/sda1-8        
  259 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ext4-dio-unwrit    
  304 root      20   0  2392   68   68 S  0.0  0.0   0:00.04 upstart-udev-br    
  306 root      16  -4  2440   72   68 S  0.0  0.0   0:00.06 udevd              
  414 root      18  -2  2328   64   60 S  0.0  0.0   0:00.00 udevd              
  415 root      18  -2  2328   64   60 S  0.0  0.0   0:00.00 udevd              
  518 root      20   0     0    0    0 S  0.0  0.0   0:02.87 vmmemctl           
  526 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kpsmoused          
  556 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kgameportd         
  618 syslog    20   0 33976  440  440 S  0.0  0.1   0:00.83 rsyslogd           
  689 root      20   0  1856   84   80 S  0.0  0.0   0:00.00 getty              
  693 root      20   0  1856   84   80 S  0.0  0.0   0:00.00 getty              
  697 root      20   0  1856   84   80 S  0.0  0.0   0:00.00 getty              
  698 root      20   0  1856   84   80 S  0.0  0.0   0:00.00 getty              
  701 root      20   0  1856   84   80 S  0.0  0.0   0:00.00 getty              
  703 memcache  20   0 54192  128  128 S  0.0  0.0   0:07.77 memcached          
  705 root      20   0  2456  268  204 S  0.0  0.1   0:00.42 cron               
  706 daemon    20   0  2316    0    0 S  0.0  0.0   0:00.00 atd                
  722 root      20   0  5640  360  256 S  0.0  0.1   0:00.53 sshd               
  753 mysql     20   0  153m  456   32 S  0.0  0.1   0:20.57 mysqld             
 9280 root      20   0  2780 1408 1064 S  0.0  0.3   0:00.05 login              
 9292 zim32     20   0  8828 6068 1536 S  0.0  1.2   0:00.26 bash               
 9324 root      20   0  7268 2968 2180 S  0.0  0.6   0:03.50 mc                 
 9326 root      20   0  6252 3544 1588 S  0.0  0.7   0:00.21 bash               
 9735 root      20   0     0    0    0 S  0.0  0.0   0:00.00 flush-8:0          
 9808 root      20   0 68892 8624 4828 S  0.0  1.7   0:00.15 apache2            
 9814 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:01.03 apache2            
 9827 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:00.97 apache2            
 9842 www-data  20   0 69232 7264 3236 S  0.0  1.4   0:00.40 apache2            
 9844 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:00.40 apache2            
 9870 www-data  20   0 69232 7264 3236 S  0.0  1.4   0:00.22 apache2            
 9872 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:00.23 apache2            
 9877 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:00.18 apache2            
 9878 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:00.18 apache2            
 9888 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:00.07 apache2            
 9889 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:00.06 apache2            
 9891 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:00.08 apache2            
 9892 www-data  20   0 69232 7256 3232 S  0.0  1.4   0:00.05 apache2            
 9893 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:00.06 apache2            
 9894 www-data  20   0 69232 7256 3232 S  0.0  1.4   0:00.08 apache2            
 9895 www-data  20   0 69232 7256 3232 S  0.0  1.4   0:00.06 apache2            
 9896 www-data  20   0 69232 7256 3232 S  0.0  1.4   0:00.04 apache2            
 9897 www-data  20   0 69232 7248 3228 S  0.0  1.4   0:00.06 apache2            
 9898 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:00.03 apache2            
 9899 www-data  20   0 69232 7260 3236 S  0.0  1.4   0:00.06 apache2            
 9901 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:00.04 apache2            
 9902 www-data  20   0 69232 7256 3232 S  0.0  1.4   0:00.04 apache2            
 9903 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:00.03 apache2            
 9904 www-data  20   0 69232 7256 3232 S  0.0  1.4   0:00.08 apache2            
 9905 www-data  20   0 69232 7256 3232 S  0.0  1.4   0:00.05 apache2            
 9907 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:00.05 apache2            
 9909 www-data  20   0 69232 7256 3232 S  0.0  1.4   0:00.08 apache2            
 9911 www-data  20   0 69232 7256 3232 S  0.0  1.4   0:00.04 apache2            
 9912 www-data  20   0 69232 7248 3228 S  0.0  1.4   0:00.04 apache2            
 9913 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:00.06 apache2            
 9914 www-data  20   0 69232 7260 3232 S  0.0  1.4   0:00.04 apache2            
 9915 www-data  20   0 69232 7260 3232 R  0.0  1.4   0:00.04 apache2            
 9916 www-data  20   0 69232 7256 3232 S  0.0  1.4   0:00.04 apache2            
 9917 www-data  20   0 69232 7256 3232 S  0.0  1.4   0:00.06 apache2            
 9918 www-data  20   0 69232 7248 3228 S  0.0  1.4   0:00.02 apache2            
 9919 root      20   0  2632 1068  816 R  0.0  0.2   0:00.02 top                

Это случай максимального использования памяти для каждого процесса, как если бы это был единственный процесс. На самом деле все процессы apache имеют общую память (общие связанные библиотеки), и эта общая память сообщается для каждого процесса, поэтому общее использование всеми процессами apache кажется больше, чем есть на самом деле.

Есть множество сообщения которые обсуждают, как понимать и интерпретировать вывод top и ps.

использование памяти процессами в Linux - сложный вопрос; вы не можете просто запустить ps и знать, что происходит. Это особенно верно, когда вы имеете дело с программами, которые создают множество идентичных дочерних процессов, например Apache. ps может сообщить, что каждый процесс Apache использует 10 мегабайт памяти, в то время как на самом деле предельная стоимость каждого процесса Apache составляет 1 мегабайт памяти.

Вы забыли рассчитать SHR, или Shared часть.

Пытаться (7*40) - (3*40) = 160, что довольно близко соответствует используемой вами памяти.

Общая память - это память, которая распределяется между процессами; библиотеки Apache и тому подобное.