Как выселить файл из системного кэша на Linux?

Используйте команду docker container prune, она удалит все остановленные контейнеры. Вы можете прочитать больше об этой команде в официальных документах здесь: https://docs.docker.com/engine/reference/commandline/container_prune/ .

Аналогично, в Docker есть команды для docker network prune, docker image prune и docker volume prune для обрезки сетей, изображений и томов.

Я использую docker system prune большую часть времени, он очищает неиспользуемые контейнеры, а также сети и висящие изображения.

Если я хочу очистить тома с помощью системных компонентов, я использую docker system prune --volumes. В этом случае также будут удалены неиспользуемые тома, поэтому будьте осторожны, вы можете потерять данные.

5
задан Paweł Hajdan 2 October 2008 в 13:28
поделиться

5 ответов

Ха, у меня есть ответ:

#include <unistd.h>
#include <fcntl.h>
int main(int argc, char *argv[]) {
  int fd;
  fd = open(argv[1], O_RDONLY);
  fdatasync(fd);
  posix_fadvise(fd, 0,0,POSIX_FADV_DONTNEED);
  close(fd);
  return 0;
}

Это из http://insights.oetiker.ch/linux/fadvise.html

10
ответ дан 18 December 2019 в 06:13
поделиться

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

При списке теста fileystem в/etc/fstab с "пользовательской" опцией затем, можно смонтировать его для теста, не будучи суперпользователем

-1
ответ дан 18 December 2019 в 06:13
поделиться

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

Это прекрасно, если Ваше приложение действительно собирается использовать O_DIRECT в производстве. Если Вы выполните тесты производительности с O_DIRECT и затем удалите O_DIRECT для производства, то Ваш тест производительности будет нереалистичен.

0
ответ дан 18 December 2019 в 06:13
поделиться

Как суперпользователь можно сделать следующее:

Освободить pagecache:

  • отзовитесь эхом 1>/proc/sys/vm/drop_caches

Освободить dentries и inodes:

  • отзовитесь эхом 2>/proc/sys/vm/drop_caches

Освободить pagecache, dentries и inodes:

  • отзовитесь эхом 3>/proc/sys/vm/drop_caches

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

sync; echo 3 > /proc/sys/vm/drop_caches

Как я сказал, только суперпользователь (корень) может сделать так.

11
ответ дан 18 December 2019 в 06:13
поделиться

Существует утилита командной строки, разработанная Эриком Вонгом, которая упрощает вызов posix_fadvise:

http://git.bogomips.org/cgit/pcu.git/tree/README

Это так же просто, как

$ pcu-fadvise -a dontneed filename-to-evict
6
ответ дан 18 December 2019 в 06:13
поделиться
Другие вопросы по тегам:

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