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

Как рассчитывается htop «Swp»?

Когда я запускаю htop (в OS X 10.6.8), я вижу что-то вроде этого:

  1  [|||||||                    20.0%]     Tasks: 70 total, 0 running
  2  [|||                         7.2%]     Load average: 1.11 0.79 0.64 
  3  [|||||||||||||||||||||||||||81.3%]     Uptime: 00:30:42
  4  [||                          5.8%]
  Mem[|||||||||||||||||||||3872/4096MB]
  Swp[                           0/0MB]

  PID USER     PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command                                                                      
  284 501       57   0 15.3G 1064M     0 S  0.0  6.5  0:01.26 /Applications/Firefox.app/Contents/MacOS/firefox -psn_0_90134                
  437 501       57   0 14.8G  785M     0 S  0.0  4.8  0:00.18 /Applications/Thunderbird.app/Contents/MacOS/thunderbird -psn_0_114716
  428 501       63   0 12.8G  351M     0 S  1.0  2.1  0:00.51 /Applications/Firefox.app/Contents/MacOS/plugin-container.app/Contents/MacOS/
  696 501       63   0 11.7G  175M     0 S  0.0  1.1  0:00.02 /System/Library/Frameworks/QuickLook.framework/Resources/quicklookd.app/Conte
   38 0         33   0 11.1G  422M     0 S  0.0  2.6  0:00.59 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framewo
  183 501       48   0 10.9G  137M     0 S  0.0  0.8  0:00.03 /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder

Как я могу использовать процессы, использующие гигабайты памяти VIRT, но при этом использовать 0 МБ подкачки?

VIRT не имеет ничего общего с используемой памятью (виртуальной или иной), но с используемой адресное пространство, который не так связан, как вы думаете.

В современных операционных системах (включая OSX) есть функция, называемая пейджинг по запросу который работает, сообщая операционной системе о необходимости сопоставить определенную область виртуального адресного пространства с файлом (например, с общей библиотекой / DLL). Только когда программа пытается прочитать эти виртуальные адреса, файл загружается в память.

Если эти разделяемые библиотеки фактически являются общими, тогда операционная система фактически будет разделять физическую память между несколькими процессами; То есть значительная часть этих десятков гигабайт - это не только библиотеки с файловой поддержкой, но и тем же библиотеки с файловой поддержкой.

Кроме того, если требуется временная память (для данных; настройки, растровые изображения, звуки и т. Д.) И нет неиспользуемых физических страниц, операционная система фактически отбрасывает содержимое этих областей с файловой поддержкой и передает их вашему приложению. . Если эти страницы понадобятся снова, операционная система может просто перезагрузить их с диска.

Замена (SWP) - это специальная файловая область для этой рабочей памяти. Создание пространства подкачки позволит операционной системе перемещать эту рабочую память на диск вместо (используемой более запущенными процессами) разделяемых библиотек, в целом улучшая производительность и, что, возможно, наиболее удивительно, производить Меньше свопинг, чем отсутствие места подкачки вообще.

У вас еще есть свободная память. Система не меняет местами, потому что в этом еще не было необходимости ... но опять же, я заметил кое-что странное - насколько я могу судить, у вас не настроено пространство подкачки. В одной из моих (Linux) систем он читает

  CPU[||||||||||||||||||||     63.2%]     Tasks: 89, 114 thr; 1 running
  Mem[|||||||||||||||||   167/1001MB]     Load average: 0.19 1.13 0.75 
  Swp[                      0/1021MB]     Uptime: 00:06:54

например.

Я не уверен, что это причуда OS X или какая-то другая проблема - вы можете проверить это с помощью монитор активности