The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Анализ распределения памяти по процессам в Solaris (solaris memory proccess debug)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: solaris, memory, proccess, debug,  (найти похожие документы)
Date: Fri, 15 Nov 2002 18:03:27 +0500 From: Vitaly Filatov <vitaly@royint.com> Newsgroups: ftn.ru.unix.solaris Subject: Анализ распределения памяти по процессам в Solaris >> $ ps -e -o vsz,rss,comm >> В первой колонке - занимаемая процессом виртуальная память в килобайтах. >> во второй колонке - размер резидентной (в ОЗУ) части процесса в килобайтах. >> в третьей колонке - имя процесса. > > Дело в том, что под Solaris у меня крутится Oracle. > и при выполнении ps -e -o vsz,rss,comm у меня основная масса строк имеет вид > 2107168 2086504 oraclesid > Значения первого и второго столбца немного изменяются, но в целом около 2-х > гигов.. Я так понимаю, что это показывается расшаренный сегмент, > используемый Oracle. Hо почему значения немного варируют? Ведь если > используется расшаренный сегмент (например под SGA), то размер его должен > быть постоянен, да и вообще под Solaris SGA не должна убегать в своп :-/ > >> >> Суммы по колонкам можно посчитать программой на awk: >> >> $ ps -e -o vsz,rss,comm | awk 'NR>1{v+=$1;t+=$2}END{print "VSZT=",v,"RSST=",t}' >> VSZT= 253780 RSST= 155676 > > И получается у меня > VSZT= 1242442936 RSST= 1230105800, чего быть вообще говоря не может .. 1) В первой колонке - занимаемая процессом виртуальная память в килобайтах. Эта память есть сумма (см. man pmap): (команды задачи) + heap + stack + (команды разделяемых библиотек) Hеобходимо учитывать, что одноимённые разделяемые библиотеки присутствуют в памяти системы только один раз, но их объём плюсуется во все числах из первого столбца. 2) Во второй колонке - размер резидентной (в ОЗУ) части процесса в килобайтах. Здесь также разделяемые библиотеки учтены многократно. Это видно из следующего: $ ps -ef | grep "/bin/sh" vitaly 674 671 0 15:03:01 pts/5 0:00 /bin/sh vitaly 444 441 0 14:09:50 pts/4 0:00 /bin/sh vitaly 685 682 0 15:04:44 pts/7 0:00 /bin/sh vitaly 679 676 0 15:03:55 pts/6 0:00 /bin/sh vitaly 707 704 0 15:19:01 pts/8 0:00 /bin/sh vitaly 713 710 0 15:20:25 pts/9 0:00 /bin/sh $ ps -e -o vsz,rss,comm | grep "/bin/sh" 1040 772 /bin/sh 1040 756 /bin/sh 1040 772 /bin/sh 1040 772 /bin/sh 1040 772 /bin/sh 1040 772 /bin/sh $ /usr/proc/bin/pmap -x 674 674: /bin/sh Address Kbytes Resident Shared Private Permissions Mapped File 00010000 88 88 84 4 read/exec sh 00035000 8 8 - 8 read/write/exec sh 00037000 12 8 - 8 read/write/exec [ heap ] EF680000 4 4 - 4 read/write/exec [ anon ] EF690000 16 16 12 4 read/exec ru.so.2 EF6A3000 4 4 - 4 read/write/exec ru.so.2 EF6C0000 664 640 620 20 read/exec libc.so.1 EF775000 32 32 - 32 read/write/exec libc.so.1 EF77D000 4 - - - read/write/exec [ anon ] EF780000 24 24 20 4 read/exec libgen.so.1 EF795000 8 8 - 8 read/write/exec libgen.so.1 EF7A0000 4 4 - 4 read/exec libdl.so.1 EF7B0000 4 4 - 4 read/write/exec [ anon ] EF7C0000 144 144 140 4 read/exec ld.so.1 EF7F3000 8 8 - 8 read/write/exec ld.so.1 EF7F5000 4 4 - 4 read/write/exec [ anon ] EFFFD000 12 12 - 12 read/write/exec [ stack ] -------- ------ ------ ------ ------ total Kb 1040 1008 876 132 Посчитаю разницу: $ ps -e -o vsz,rss,comm | awk 'NR>1{v+=$1;t+=$2}END{print "VSZT=",v,"RSST=",t}' VSZT= 228680 RSST= 146856 $ /usr/sbin/swap -s total: 41080k bytes allocated + 11704k reserved = 52784k used, 229992k available 228680 - 146856 = 81824. Это не равно 52784k, что говорит о том, что я что-то не учёл, т.е. в виртуальной памяти процесса присутствует нечто (например буфера ввода вывода?), что не учитывается в rss. Hо прикинуть, хвосты каких процессов находятся в свопе можно: чем больше у процесса разница VSZ - RSS, тем больше занимаемый им своп. Можно использовать команду: (/usr/proc/bin/pmap -x 1|head -2|tail -1|sed 's/Address/Process/;s/Permissions.*//');ps -e | awk 'NR>1{print "echo \"",$1,"\c\";/usr/proc/bin/pmap -x",$1,"|tail -1|sed \"/process/d;s/total Kb//\""}'| sh 2>&1 | sed '/process/d' чтобы посмотреть детали распределения памяти по процессам: # (/usr/proc/bin/pmap -x 1|head -2|tail -1|sed 's/Address/Process/;s/Permissions.*//');ps -e | awk 'NR>1{print "echo \"",$1,"\c\";/usr/proc/bin/pmap -x",$1,"|tail -1|sed \"/process/d;s/total Kb//\""}'| sh 2>&1 | sed '/process/d' Process Kbytes Resident Shared Private 1 740 292 - 292 293 1692 1608 1364 244 107 2136 1896 1376 520 287 1688 1616 1364 252 48 1164 1116 876 240 50 2120 2004 1448 556 188 2212 2128 1472 656 105 2408 2196 1544 652 103 2212 1908 1260 648 114 2392 2128 1468 660 112 3516 3144 1736 1408 148 2308 2040 1436 604 294 15800 12808 1332 11476 156 2688 2448 1504 944 144 2172 1980 1352 628 187 2024 1940 1344 596 147 1772 1608 1272 336 165 3460 2160 1416 744 193 3036 1896 1312 584 175 1728 1652 1348 304 219 2132 2048 1404 644 207 1204 1156 876 280 216 984 920 768 152 221 2408 2240 1448 792 234 2112 2016 1284 732 228 2512 2200 1336 864 236 1920 1828 1284 544 292 1628 1568 1256 312 295 5088 4476 2936 1540 272 2468 2176 1476 700 274 1764 1600 1272 328 277 1788 1692 1400 292 279 1972 1720 1288 432 339 2244 2060 1776 284 286 1620 1548 1304 244 289 4672 4056 2768 1288 297 2244 2060 1776 284 327 1764 1692 1480 212 386 1044 1012 876 136 329 1804 1732 1480 252 410 1768 1700 1480 220 433 4152 3920 3240 680 383 3792 3268 2308 960 674 1040 1008 876 132 409 3328 2960 1704 1256 407 4392 3972 2324 1648 408 1768 1700 1480 220 453 29316 25784 4848 20936 415 2248 2064 1776 288 425 3960 3728 3124 604 432 2800 2616 1856 760 441 4300 4060 3200 860 444 1040 1008 876 132 446 5460 5112 3336 1776 452 7908 7540 3612 3928 671 4316 4084 3200 884 454 18928 15696 4776 10920 703 1040 1008 876 132 670 1040 1008 876 132 682 4312 4080 3200 880 685 1040 1008 876 132 690 5076 4744 3544 1200 709 1040 1008 876 132 704 4300 4068 3200 868 676 4316 4080 3200 880 679 1040 1008 876 132 681 1040 1008 876 132 707 1040 1008 876 132 708 2144 2008 1384 624 710 4316 4084 3200 884 713 1040 1008 876 132 790 3612 2664 1776 888 784 4300 4064 3200 864 787 1040 1008 876 132 803 4360 4128 3200 928 806 1040 1008 876 132 906 284 276 8 268 2891 4212 3980 3144 836 2899 1040 1008 924 84 2896 1004 972 840 132 Виталий Филатов http://members.tripod.com/Vitaly_Filatov

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру