|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/1619b11b590c.html, оценка из 5, голосов 10
|