Как видеть буферизованные и кэшированные данные

Похож на кого-то, печатает неподписанные числа с (подписанным) форматом %d...

3
24.12.2013, 15:37
1 ответ

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

Вы видите, при помощи которого блоки в настоящее время находятся в Вашем кэше fincore. Вот пример от страницы проекта:

# fincore --pages=false --summarize --only-cached * 
stats for CLUSTER_LOG_2010_05_21.MYI: file size=93840384 , total pages=22910 , cached pages=1 , cached size=4096, cached perc=0.004365 
stats for CLUSTER_LOG_2010_05_22.MYI: file size=417792 , total pages=102 , cached pages=1 , cached size=4096, cached perc=0.980392 
stats for CLUSTER_LOG_2010_05_23.MYI: file size=826368 , total pages=201 , cached pages=1 , cached size=4096, cached perc=0.497512 
stats for CLUSTER_LOG_2010_05_24.MYI: file size=192512 , total pages=47 , cached pages=1 , cached size=4096, cached perc=2.127660 
stats for CLUSTER_LOG_2010_06_03.MYI: file size=345088 , total pages=84 , cached pages=43 , cached size=176128, cached perc=51.190476 

Что касается того, как очистить их, от man 5 proc:

/proc/sys/vm/drop_caches (начиная с Linux 2.6.16)

Запись в этот файл заставляет ядро отбрасывать чистые кэши, dentries, и inodes из памяти, заставляя ту память стать бесплатной. Это может быть полезно для тестирования управления памятью и выполнения восстанавливаемых сравнительных тестов файловой системы. Поскольку запись в этот файл заставляет преимущества кэширования быть потерянными, это может ухудшить полную производительность системы.

  • Для освобождения pagecache используйте: echo 1 > /proc/sys/vm/drop_caches
  • Для освобождения dentries и inodes используйте: echo 2 > /proc/sys/vm/drop_caches
  • Для освобождения pagecache, dentries и inodes, используйте: echo 3 > /proc/sys/vm/drop_caches

Поскольку запись в этот файл является неразрушающей операцией, и грязные объекты не freeable, пользователь должен выполнить синхронизацию (8) сначала.

Вы обычно не хотите сбрасывать кэш, поскольку его вся цель состоит в том, чтобы улучшить производительность, но для отладки целей можно сделать так при помощи drop_caches как так (примечание: необходимо быть корнем для использования drop_caches, но синхронизация может быть сделана как любой пользователь):

# sync && echo 3 > /proc/sys/vm/drop_caches
8
27.01.2020, 21:11

Теги

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