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

Solaris: как указать пространство подкачки для каждого процесса?

Как в Solaris узнать, сколько места подкачки занимает данный процесс? Или, что еще лучше, как я могу перечислить все запущенные процессы, отсортированные по использованию пространства подкачки?

Я прошу именно это для Соляриса. У меня нет top команда доступна и ни prstat ни swap похоже, может предоставить информацию о том, сколько пространства подкачки использует данный процесс.

Вы можете использовать команду:

pmap -S <pid>

чтобы увидеть всю статистику памяти, включая использование подкачки.

С помощью небольшой магии оболочки вы можете обернуть его в цикл bash:

cd /proc
for i in *; do
    SWAP=`pmap -S $i | grep ^total | awk '{ print $3; }'`
    [ "xx$SWAP" != "xx" ] && echo "$SWAP bytes $i"
done | sort -n

Вывод в байтах в формате:

<number> bytes <pid>

Я не уверен, соответствует ли 3 доллара нужному столбцу, потому что это столбец «Кбайты», а не столбец «Обмен».

В заголовке он 3-й, но не в grep total (из-за пробела в "всего Кб"):

Address  Kbytes    Swap Mode Mapped File

total Kb  240576  235028`

для i в *; do pmap -S $ i 2> / dev / null | nawk -v PID = $ i '$ 1 == "total" && $ 4> 0 {print PID, "=>", $ 4, $ 2}'; сделано | sort -rn -k 3,3