Вторая серия настройки производительности инструментов Linux: буфер и кеш

Операционная система Linux

1. Введение в дело

Давайте возьмем пример, давайте посмотрим на свободный вывод, бесплатный источник данных приобретения: /proc/meminfo файл, для этого файла, будет проходить через эту серию.

root@szdc-calic-2-6:~# free
              total        used        free      shared  buff/cache   available
Mem:       32895096     1698396     8197904      307688    22998796    30343448
Swap:      31250428      114992    31135436

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

Во-вторых, кеш и буфер

2.1 cache

2.1.1 Определения

Прежде всего, понятно, что в управлении памятью кеш относится к: кэшу страниц. Кэш страницы — это кеш страницы, который нацелен на файловую систему и хранит файловые данные файла (файл делится на метаданные и файловые данные).

2.1.2 Какие кэши нельзя восстановить

Мы выполняем команду reclaim cache

[root@k8s-dbg-master-1 ~]# echo 3 > /proc/sys/vm/drop_caches
[root@k8s-dbg-master-1 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:          32117        8622         720       16056       22773         949
Swap:         16383         216       16167

Из вышеизложенного мы знаем, что даже если мы выполним команду очистки кеша, все еще есть некоторые кеши, которые нельзя восстановить, в том числе: tmpfs, разделяемая память и mmap для применения к памяти с состоянием флага MAP_SHARED. Эта часть не объяснена подробно, если вам интересно, вы можете попробовать это сами.

2.2, буфер

2.2.1 Определения

(1) В управлении памятью буфер относится к буферному кешу. Буферный кеш — это буфер чтения и записи блочного устройства. Продолжаем добавлять знания.Операционная система оперирует диском в терминах блоков.Блок будет содержать один или несколько секторов, но не будет превышать размер страницы.

(2) Буферы в основном используются для кэширования информации метаданных (dentries, inodes) в файловой системе и других блоков, которые не являются файловыми данными, таких как метаданные и ввод-вывод необработанных блоков, поэтому буферный кеш необходимо использовать отдельно для кэширования. .

2.3 Отношения между ними

После ядра 2.6 две структуры унифицированы, обе являются кешем страниц, а страница содержит одну за другой буферные структуры, поэтому наша команда free также объединяет их. Эти два используются вместе.Когда мы записываем файл, содержимое кеша страницы будет изменено, а кеш-буфер может пометить страницу с помощью разных буферов (буферов) и записать, какой блок был изменен.Таким образом, когда грязные данные записывается обратно, нет необходимости записывать всю страницу, а только измененный блок.

В-третьих, анализ дела

3.1 Тематическое исследование

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

(1) Очистить кеш вручную

[root@k8s-dbg-master-1 ~]# echo 3 > /proc/sys/vm/drop_caches       

[root@k8s-dbg-master-1 ~]# cat /proc/meminfo
MemTotal:       32887860 kB
MemFree:        15764108 kB
MemAvailable:   17081976 kB
Buffers:            1792 kB
Cached:          1191456 kB

(2) Выполнить команду и результат

[root@k8s-dbg-master-1 ~]# cp hyperkube /tmp/hyperkube
[root@k8s-dbg-master-1 ~]# cat /proc/meminfo
MemTotal:       32887860 kB
MemFree:        15240656 kB
MemAvailable:   17092320 kB
Buffers:           18016 kB
Cached:          1708088 kB

Как видите, и кеш, и буфер увеличились.

В-четвертых, проблема

1. Теперь попытайтесь ответить на поставленный в начале вопрос: какова текущая ситуация с системной памятью?

V. Ссылки

1,В/Страх/…

2,linuxperf.com/?p=142

Категории