LINUX.ORG.RU
ФорумAdmin

Использование памяти

 ,


0

1

Что-то не могу понять. Смотрю в ТОП, у процесса колонка VIRT=6GB (RES=500MB), но в тоже время свопа в системе всего 512MB, причем весь он занят (как обычно, я уже забил на это и походу не лечится). В чем дело? Куда VIRT пишется? Процес какой-то мусор накапливает, можно ли его очистить и вообще нужно ли? Направьте на путь истинный..)

★★★★

VIRT - это общее адресное пространство, а не только swap.

anonymous ()
Ответ на: комментарий от Minona

Виртуальный размер процесса. Показывает общее количество памяти, которое способна адресовать программа в данный момент времени. VIRT = DATA + CODE + SWAP + SHR Также включает в себя страницы, которые были выделены системой, но не использованы.

То есть процесс может теоретически захватить 6гб реальной памяти или что? Почему так много? У других процессов virt в 3 раза больше res, у mysql почти одинаковый

gobot ★★★★ ()

Смотря что за софт, нужно думать над его оптимизацией или наращиванием железа. Если охота поиграться, сдуй кэш:

echo 3 > /proc/sys/vm/drop_caches
InterVi ★★★★ ()

Адресное пространство может быть гораздо больше, чем реально используемая физическая память и свап. Кури матчасть.

anonymous ()
Ответ на: комментарий от InterVi

Ничего думать не нужно, всё нормально.

anonymous ()
Ответ на: комментарий от InterVi

Процес - node, но там скрипты тянут сишные либы. Кэш сбросил, не повлияло. Я вот что хочу узнать - нужно ли копать почему растет VIRT или оставить как есть?

gobot ★★★★ ()
Ответ на: комментарий от anonymous

Это «Адресное пространство» куда адресует 6GB, в астрал? )) Допустим у меня реальной памяти 1гиг, а вирт=3 гига, куда будут эти 3 гига адресоваться?

gobot ★★★★ ()
Ответ на: комментарий от gobot

Вникуда, например, пока хоть один байт туда не будет записан. Это вообще может быть набор адресов для работы с устройствами или как выше написали замапленые файлы.

anonymous ()
Ответ на: комментарий от gobot

в астрал

Можешь тест сделать?

#include <iostream>

int main()
{
  std::cout << "Hello astral!\n";
  (void)std::cin.get();
}
g++ main.cpp -o test -fsanitize=address
./test
// теперь посмотри VIRT у процесса, на всякий случай буковка T это терабайт
fsb4000 ★★★★★ ()
Ответ на: комментарий от gobot

Может и не нужно. Если обвалится через сколько-то времени, просто плановый перезапуск настроить.

InterVi ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.