Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Alex Mizrahi                         2:5020/400     18 Jun 2007  22:12:26
 To : All
 Subject : memory usage
 -------------------------------------------------------------------------------- 
 
 helo
 
 наткнулся на странности с выделением памяти..
 есть виртуальная машина (vmware), на которой из крупных процессов крутится 
 только сервер на Java. этому серверу в настройках Java отведено 220 MB 
 памяти. всей виртуальной машине я отвёл 256 MB -- т.е. остальным процессам и 
 на другие накладные расходы остаётся 36 MB.
 причём на всякий случай я ему включил swap.
 
 как оказалось, при обращении к серверу Java оно начинает активно свопиться, 
 т.е. памяти ей не хватает. причём, по-идее вся резидентная память Java не 
 нужна (кроме как для full gc), но во всё равно свопится, зараза.
 
 данные top:
 
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 2935 tomcat5   25   0  462m 227m 3744 S  0.0 90.7   4:15.08 java
 3020 www-data  20   0  226m 1108  724 S  0.0  0.4   0:00.12 apache2
 
 free:
              total       used       free     shared    buffers     cached
 Mem:        256972     253116       3856          0        340       7456
 -/+ buffers/cache:     245320      11652
 Swap:       409616     148696     260920
 
 сессия своппинга, запечатленная vmstat 5:
 
 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
  0  0 153576   3912    360   6612    0    0     0     0  251   42  0  0 100 
 0
  0  0 157532   5088    464   7936   35  963   450   997  293   89  0  5 83 
 12
  0  3 172720   3120    316   7768 3910 3061  3926  3083 1210  128 27 53 11 
 9
  1  1 188416   3128     44   4636 6808 3564  6808  3570 1966  201  2 81  0 
 17
  1  1 199512   3568     56   2532 3898 3092  4090  3092 1271  203  8 54  0 
 38
  1  1 204808   3660     84   4800 2951 2254  3856  2254 1029  210 18 43  0 
 39
  1  0 205264   4236     52   3112 2710 1831  2915  1834  977  172 25 44  0 
 31
  1  1 204808   3368     72   2996  370  162   454   162  349   66 86 13  0 
 1
  0  0 205700   4248    124   5032  189  570   846   577  319  127 62 10 11 
 17
  1  0 205652   4148    128   5040   22    0    29     0  252   42  0  0 100 
 0
  1  0 205652   4156    136   5044    0    0     0     2  251   43  0  0 100 
 0
 
 т.е свопилось оно примерно 6 x 5 = 30 секунд, со средней интенсивонстью 
 порядка 3х мегабайт в секунду на ввод и вывод.. т.е. прокачало по 90 
 мегабайт в обоих направлениях..
 
 распечатка /proc/meminfo:
 
 MemTotal:       256972 kB
 MemFree:          4724 kB
 Buffers:           972 kB
 Cached:           9888 kB
 SwapCached:     155632 kB
 Active:         179180 kB
 Inactive:        64100 kB
 HighTotal:           0 kB
 HighFree:            0 kB
 LowTotal:       256972 kB
 LowFree:          4724 kB
 SwapTotal:      409616 kB
 SwapFree:       203240 kB
 Dirty:               4 kB
 Writeback:           0 kB
 AnonPages:      229404 kB
 Mapped:           3164 kB
 Slab:             5060 kB
 PageTables:        908 kB
 NFS_Unstable:        0 kB
 Bounce:              0 kB
 CommitLimit:    538100 kB
 Committed_AS:   777796 kB
 VmallocTotal:   770040 kB
 VmallocUsed:      2552 kB
 VmallocChunk:   766908 kB
 
 вот тут непонятно.. куча страниц в SwapCached..
 AnonPages как раз как и прогнозировалось -- 230 MB. по остальным статьям 
 тоже вроде бы особых расходов не наблюдается, так что не понятно, зачем 
 нужно скидывать 150 MB в swap, а потом прокачивать 100 MB из него..
 
 я предположил, что просто алгоритмы выделения памяти просто не 
 оптимизированы под случай когда память забита под завязку.
 но отключить swap оно не даёт! если же убить сервер Java, освободив память и 
 отключить swap, то при загрузке сервера он со временем вылетает из-за 
 нехватки памяти.
 т.е. памяти действительно не хватает, но как узнать сколько именно?
 
 на самом деле не то, чтобы это было мне сейчас особо важно -- я могу просто 
 выделить виртуальной машине побольше памяти.
 но интересно разобраться, каким образом Linux расчитывает объёмы памяти, где 
 скрываются "неучтённые" расходы. может в /proc есть какая-то более детальная 
 информация?
 просто в будущем у меня, вероятно, увеличатся объёмы данных, и хотелось бы 
 знать, на что я могу расчитывать. как оказалось, не стоит доверять данным 
 RES в top..
 
 кстати, если убить процесс Java, то данные free выглядят так:
 
 debian:/proc# free
              total       used       free     shared    buffers     cached
 Mem:        256972      42024     214948          0       3148      28952
 -/+ buffers/cache:       9924     247048
 Swap:       409616       5640     403976
 
 т.е. жрёт память, похоже, именно он.
 
 на всякий случай версия Linux -- Debian 4.0, kernel 2.6.18-4-686
 
 with best regards, Alex 'killer_storm' Mizrahi.
 --- ifmail v.2.15dev5.3
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 memory usage   Alex Mizrahi   18 Jun 2007 22:12:26 
 Re: memory usage   Eugene B. Berdnikov   19 Jun 2007 03:08:31 
 Re: memory usage   Alex Mizrahi   19 Jun 2007 03:31:05 
 Re: memory usage   Eugene B. Berdnikov   20 Jun 2007 03:08:15 
 Re: memory usage   Alex Korchmar   19 Jun 2007 12:33:59 
 Re: memory usage   Victor Krapivin   19 Jun 2007 15:42:51 
 memory usage   Anton Shuko   19 Jun 2007 23:11:42 
 Re: memory usage   Zahar Kiselev   19 Jun 2007 16:19:52 
 Re: memory usage   Andy Shevchenko   19 Jun 2007 19:43:59 
 Re: memory usage   Zahar Kiselev   20 Jun 2007 04:04:24 
 Re: memory usage   Wladimir Mutel   20 Jun 2007 10:11:31 
 Re: memory usage   Zahar Kiselev   20 Jun 2007 15:31:22 
 Re: memory usage   Andy Shevchenko   20 Jun 2007 20:48:22 
 Re: memory usage   Zahar Kiselev   21 Jun 2007 19:06:20 
 Re: memory usage   Ilya Dikarev   21 Jun 2007 09:21:23 
 Re: memory usage   Zahar Kiselev   21 Jun 2007 19:48:58 
 Re: memory usage   Ilya Dikarev   22 Jun 2007 00:47:49 
 Re: memory usage   Zahar Kiselev   22 Jun 2007 13:52:58 
 Re: memory usage   Sergey Khvatov   22 Jun 2007 17:14:18 
 Re: memory usage   Ilya Dikarev   22 Jun 2007 16:53:49 
 Re: memory usage   Dennis Prochko   19 Jun 2007 11:00:45 
 memory usage   Anton Shuko   19 Jun 2007 22:56:25 
Архивное /ru.linux/1619b11b590c.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional