Существуют ли какие-либо способы или инструменты для сброса кеша и буфера памяти?

В качестве заголовка я хочу проверить, какие файлы загружены в буфер. Просто так ясно, что буферы и кеш, о которых я говорю, – это то, что появляется при запуске команды free -m :

 $ free -m total used free shared buffers cached Mem: 7800 7671 128 0 291 724 -/+ buffers/cache: 6655 1144 Swap: 5823 613 5210 

  • Я случайно сломал / bin / bash
  • rsyslog.conf только частично заслуженно
  • Добавить и скомпилировать apt-get менеджер пакетов для LFS
  • Samson Meteor Mic под Linux / ALSA
  • Автоматически отключать сенсорную панель при запуске
  • Объясните вывод значений -D в GNU find
  • Как настроить мой DNS при перезаписи resolv.conf?
  • Есть ли способ показать все флаги в / proc / mounts?
  • Попытка понять, как TTY и PTY работают в CentOS 6.5?
  • Ключ управления питанием для запуска сценариев при пробуждении
  • OOM - убивает процесс от пользователя с наибольшим потреблением памяти?
  • Драйверы Blacklisting
  • 3 Solutions collect form web for “Существуют ли какие-либо способы или инструменты для сброса кеша и буфера памяти?”

    Взгляните на linux-ftools . Этот набор инструментов специально разработан для анализа буферов и кеша. Он включает следующие инструменты:

    fincore

     $ fincore [options] files... --pages=false Do not print pages --summarize When comparing multiple files, print a summary report --only-cached Only print stats for files that are actually in cache. root@xxxxxx:/var/lib/mysql/blogindex# 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 ... 

    ПРИМЕЧАНИЕ. В вышеприведенном примере отображаются все файлы в каталоге /var/lib/mysql/blogindex , которые кэшируются. В этом случае есть несколько файлов с именем CLUSTER_LOG_*.MYI .

    fadvise

     SYNTAX: filename mode [offset] [,length] Where mode can be: POSIX_FADV_NORMAL No further special treatment. POSIX_FADV_RANDOM Expect random page references. POSIX_FADV_SEQUENTIAL Expect sequential page references. POSIX_FADV_WILLNEED Will need these pages. POSIX_FADV_DONTNEED Dont need these pages. POSIX_FADV_NOREUSE Data will be accessed once. Allows an application to to tell the kernel how it expects to use a file handle, so that the kernel can choose appropriate read-ahead and caching techniques for access to the corresponding file. This is similar to the POSIX version of the madvise system call, but for file access instead of memory access. The sys_fadvise64() function is obsolete and corresponds to a broken glibc API, sys_fadvise64_64() is the fixed version. The following are the values for the advice parameter: FADV_NORMAL No special treatment. FADV_RANDOM Expect page references in random order. FADV_SEQUENTIAL Expect page references in sequential order. FADV_WILLNEED Expect access in the near future. FADV_DONTNEED Do not expect access in the near future. Subsequent access of pages in this range will succeed, but will result either in reloading of the memory contents from the underlying mapped file or zero-fill-in-demand pages for mappings without an underlying file. FADV_NOREUSE Access data only once. 

    fallocate

     SYNTAX: fallocate file length fallocate() allows the caller to directly manipulate the allocated disk space for the file referred to by fd for the byte range starting at offset and continuing for len bytes. The mode argument determines the operation to be performed on the given range. Currently only one flag is supported for mode: FALLOC_FL_KEEP_SIZE This flag allocates and initializes to zero the disk space within the range specified by offset and len. After a successful call, subsequent writes into this range are guaranteed not to fail because of lack of disk space. Preallocating zeroed blocks beyond the end of the file is useful for optimizing append workloads. Preallocating blocks does not change the file size (as reported by stat(2)) even if it is less than offset+len. If FALLOC_FL_KEEP_SIZE flag is not specified in mode, the default behavior is almost same as when this flag is specified. The only difference is that on success, the file size will be changed if offset + len is greater than the file size. This default behavior closely resembles the behavior of the posix_fallocate(3) library function, and is intended as a method of optimally implementing that function. Because allocation is done in block size chunks, fallocate() may allocate a larger range than that which was specified. 

    Опорожнение кеша буферов

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

     $ free && sync && echo 3 > /proc/sys/vm/drop_caches && free total used free shared buffers cached Mem: 1018916 980832 38084 0 46924 355764 -/+ buffers/cache: 578144 440772 Swap: 2064376 128 2064248 total used free shared buffers cached Mem: 1018916 685008 333908 0 224 108252 -/+ buffers/cache: 576532 442384 Swap: 2064376 128 2064248 

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

    ПРИМЕЧАНИЕ: очистите память от ненужных вещей (Kernerl 2.6.16 или новее). Всегда выполняйте синхронизацию сначала, чтобы вымыть полезные вещи на диск !!!

    • Чтобы освободить pagecache:

       $ echo 1 > /proc/sys/vm/drop_caches 
    • Чтобы освободить шпалы и иноды:

       $ echo 2 > /proc/sys/vm/drop_caches 
    • Чтобы освободить pagecache, dentries и inodes:

       $ echo 3 > /proc/sys/vm/drop_caches 

    Вышеупомянутые должны выполняться как root. Если вы пытаетесь сделать это с помощью sudo вам нужно немного изменить синтаксис примерно так:

     $ sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches' $ sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches' $ sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches' 

    Альтернативные методы:

     # alternative #1 $ sudo tee /proc/sys/vm/drop_caches <<<1 # alternative #2 $ echo "echo 1 > /proc/sys/vm/drop_caches" | sudo sh 

    Почему изменение синтаксиса? Программа /bin/echo работает как root, из-за sudo , но оболочка, перенаправляющая вывод echo в файл root-only, все еще работает как вы. Ваша текущая оболочка выполняет перенаправление до начала sudo .

    Рекомендации

    • Официальное ядро ​​документации Документация для / proc / sys / vm / * – версия ядра 2.6.29

    Вы также можете попробовать vmtouch

     vmtouch opens every file provided on the command line and maps it into virtual memory with mmap(2). The mappings are opened read-only. It recursively crawls any directories and does the same to all files it finds within them. With no options, vmtouch will not read from (touch) any memory pages. It will only use mincore(2) to determine how many pages of each file are actually resident in memory. Before exiting, it will print a summary of the total pages encountered and how many were resident. 

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

     echo 2 | sudo tee -a /proc/sys/vm/drop_caches 

    совершенная команда вверх

    Linux и Unix - лучшая ОС в мире.