В Linux, каково различие между “буферами” и “кэшем”, о котором сообщает бесплатная команда?

Установка Почтового сервера локально является самой простой вещью сделать. Существует много Почтовых серверов, которые легко установить. Мое персональное предпочтение было бы Постфикс . Это - также значение по умолчанию во многих дистрибутивах Linux.

Однако, поскольку другие указывают, основные вопросы будут и во Входящих и в Исходящих Средствах управления СПАМОМ. Без Входящих Средств управления СПАМОМ Вы будете тратить впустую пропускную способность и иметь непоследовательные проблемы производительности.

Без Исходящих средств управления, Вы, вероятно, столкнетесь с проблемами Доставки.

, Если Вы хотите поддержать все внутреннее, вставьте хороший Спам-фильтр перед Почтовым сервером. Иначе Вы можете иметь локальный Почтовый сервер и произвести Ваше Исходящее/Входящее сканирование на стороне к сервисам как SAFENTRIX. Услуги по сканированию не хранят Ваши электронные письма (они - просто сканирование и передают сервисы), и проблемы конфиденциальности могли бы быть меньше.

74
задан 10 June 2009 в 18:51
5 ответов

"Кэшируемое" общее количество будет также включать некоторые другие выделения памяти, такие как любые tmpfs файловые системы. Видеть, что это в действительности пробует:

mkdir t
mount -t tmpfs none t
dd if=/dev/zero of=t/zero.file bs=10240 count=10240
sync; echo 3 > /proc/sys/vm/drop_caches; free -m
umount t
sync; echo 3 > /proc/sys/vm/drop_caches; free -m

и Вы будете видеть отбрасывание значения "кэша" на 100 МБ, которые Вы скопировали в основанную на поршне файловую систему (предполагающий, что было достаточно свободной RAM, Вы могли бы найти, что часть его закончилась в подкачке, если машина уже перегружена с точки зрения использования памяти). "Синхронизация; отзовитесь эхом 3>/proc/sys/vm/drop_caches", прежде чем каждый вызов к свободному должен будет записать что-либо ожидающее во всех буферах записи (синхронизация) и очиститься, все кэшировали/буферизовали дисковые блоки из памяти так добрая воля только считать другие выделения в "кэшируемом" значении.

RAM, используемая виртуальными машинами (такими как те, которые работают под VMware), может также считаться в "кэшируемом" значении free, как будет RAM, используемая в настоящее время открытыми файлами с отображенной памятью (это будет варьироваться в зависимости от гипервизора/версии, который Вы используете и возможно между версиями ядра также).

Таким образом, это не столь просто как "буферные количества, незаконченные записи файла/сети и кэшируемые количества недавно читали/писали блоки, которые, как сохранили в RAM, сохранили будущие физические чтения", хотя в большинстве целей это более простое описание сделает.

42
ответ дан 28 November 2019 в 19:28
  • 1
    +1 для интересных нюансов. Это - вид информации I' m поиск. На самом деле я подозреваю, что числа являются настолько замысловатыми, так вовлеченные в такое количество различных операций, что они - в лучшем случае общие индикаторы. –  Avery Payne 10 June 2009 в 20:49

Хитрый Вопрос. При вычислении свободного пространства, на самом деле необходимо сложить буфер и кэш оба. Это - то, что я Мог найти

Буфер - что-то, что должно все же быть "записано" в диск. Кэш - что-то, что было "считано" из диска и сохранено для более позднего использования.

http://visualbasic.ittoolbox.com/documents/difference-between-buffer-and-cache-12135

8
ответ дан 28 November 2019 в 19:28

Освобождение буфера / кеша

Предупреждение Это объясняет сильный метод, не рекомендуемый на производственном сервере! Итак, вас предупредили, не обвиняйте меня, если что-то пойдет не так.

Для понимания, вы можете заставить вашу систему делегировать как можно больше памяти в кэш ], чем удалить кэшированный файл:

Преамбула

Перед выполнением теста вы можете открыть другое окно с обращением:

$ vmstat -n 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  1  39132  59740  39892 1038820    0    0     1     0    3    3  5 13 81  1
 1  0  39132  59140  40076 1038812    0    0   184     0 10566 2157 27 15 48 11
...

для отслеживания эволюции свопа в реальном времени.

Примечание: Вы должны удалить столько свободного диска в текущем каталоге, сколько вы иметь память + своп

Демо
$ free
         total       used       free     shared    buffers     cached
Mem:       2064396    2004320      60076          0      90740     945964
-/+ buffers/cache:     967616    1096780
Swap:      3145720      38812    3106908

$ tot=0
$ while read -a line;do
      [[ "${line%:}" =~ ^(Swap|Mem)Total$ ]] && ((tot+=2*${line[1]}))
    done </proc/meminfo
$ echo $tot
10420232

$ dd if=/dev/zero of=veryBigFile count=$tot
10420232+0 records in
10420232+0 records out
5335158784 bytes (5.3 GB) copied, 109.526 s, 48.7 MB/s

$ cat >/dev/null veryBigFile

$ free
             total       used       free     shared    buffers     cached
Mem:       2064396    2010160      54236          0      41568    1039636
-/+ buffers/cache:     928956    1135440
Swap:      3145720      39132    3106588

$ rm veryBigFile 

$ free
         total       used       free     shared    buffers     cached
Mem:       2064396    1005104    1059292          0      41840      48124
-/+ buffers/cache:     915140    1149256
Swap:      3145720      39132    3106588

Замечание, хост, на котором я это сделал, сильно используется. Это будет более значимо на действительно тихой машине.

2
ответ дан 28 November 2019 в 19:28

Я искал более четкое описание буфера и нашел в «Профессиональная архитектура ядра Linux® 2008»

Глава 16: Взаимодействие страницы и буфера

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

5
ответ дан 28 November 2019 в 19:28

Объяснено RedHat :

Страницы кэша:

Кэш - это часть памяти, которая прозрачно хранит данные, чтобы будущие запросы на эти данные могли обслуживаться быстрее. Эта память используется ядром для кэширования данных на диске и повышения производительности ввода-вывода.

Ядро Linux построено таким образом, что оно будет использовать как можно больше ОЗУ для кэширования информации из ваших локальных и удаленных файловых систем и диски. По прошествии времени в системе выполняются различные операции чтения и записи, ядро ​​пытается сохранить данные, хранящиеся в памяти для различных процессов, которые выполняются в системе, или данные соответствующих процессов, которые будут использоваться в ближайшем будущем. Кэш не восстанавливается в то время, когда процесс останавливается / завершается, однако, когда другим процессам требуется больше памяти, чем свободная доступная память, ядро ​​запускает эвристику, чтобы освободить память, сохраняя данные кеша и выделяя эту память новому процессу.

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

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

Сегменты разделяемой памяти SysV также учитываются как кэш, хотя они не представляют никаких данных на дисках. Размер сегментов разделяемой памяти можно проверить с помощью команды ipcs -m и проверки столбца байтов.

Буферы:

Буферы - это представление дискового блока данных, которые хранятся в кэшах страниц. Буферы содержат метаданные файлов / данных, которые находятся в кеше страницы. Пример: когда есть запрос любых данных, которые присутствуют в кэше страницы, сначала ядро ​​проверяет данные в буферах, которые содержат метаданные, которые указывают на фактические файлы / данные, содержащиеся в кешах страниц. Как только из метаданных известен фактический адрес блока файла, ядро ​​выбирает его для обработки.

3
ответ дан 28 November 2019 в 19:28

Теги

Похожие вопросы