Как избежать кеша страницы в ядре, приложение может напрямую писать или читать данные с диска? В ядре, как установить?Как отключить кеш страниц в ядре Linux?
ответ
Вам понадобится приложение для вызова O_DIRECT. На странице man http://man7.org/linux/man-pages/man2/open.2.html
С этим вы сообщаете ядру не писать/читать из кэша страниц при выполнении операций ввода-вывода.
O_DIRECT (начиная с Linux 2.4.10) Попробуйте минимизировать эффекты кэша ввода-вывода и из этого файла . В целом это ухудшит производительность, но это полезно в особых ситуациях, например, когда приложения используют собственное кэширование. Файловый ввод-вывод выполняется непосредственно с/от пользователя - пробелов. Флаг O_DIRECT сам по себе прилагает усилия для передачи данных синхронно, но не дает гарантии флага O_SYNC, что передаются данные и необходимые метаданные . Чтобы гарантировать синхронный ввод-вывод, O_SYNC должен быть , используемый в дополнение к O_DIRECT. См. ПРИМЕЧАНИЯ ниже для дальнейшего обсуждения .
A semantically similar (but deprecated) interface for block
devices is described in raw(8).
Открыть файл, запрос был отправлен следующим образом: open (User-Space, nodeA) ---> sys_open (Kernel, nodeA) -----> fuse_open (kernel, node A) ------ -> client_open (пространства пользователя, узел А) ----- сеть -------> server_open (User-Space, NodeB) -------> sys_open (Kernel, NodeB) - -----> ext4_open (Kernel, nodeB). Перед сетью они принадлежат клиенту GlusterFS, а после этого они являются сервером GlusterFS. Если я добавлю флаг O_DIRECT в client_open(), тогда сервер откроет файл в режиме прямого доступа, IO-режим? – user6481589
Hmm so IIUC вы хотите открыть файл через сетевую файловую систему Fuster FUSE и хотите открыть сервер, чтобы открыть файл, не используя кеш страницы страницы, но вы хотите, чтобы клиент мог указать это на сервер. Если это понимание верное, я бы сказал, что вам нужно прочитать спецификацию протокола gluster fs, чтобы узнать, передает ли он этот тип атрибута серверу или нет. –
- 1. Как отключить кеш браузера в ядре rc2 ASP.NET?
- 2. Как отключить кеш-кеш-кеш
- 3. yii2 отключить кеш страниц по запросу
- 4. Отключить кеш страниц на определенной странице
- 5. кеш-раскраска на управление памятью slab в ядре Linux
- 6. Отключить кеш/буфер на конкретном файле (Linux)
- 7. page swap в ядре Linux
- 8. отображение памяти в ядре linux
- 9. Как спать в ядре Linux?
- 10. Как я могу сжать кеш страниц Linux изнутри пространства ядра?
- 11. Очереди в ядре Linux
- 12. Отдел в ядре linux
- 13. Как отключить кеш Apache?
- 14. Как отключить кеш Dwoo?
- 15. как отключить угловой кеш
- 16. Как отключить WIF-кеш?
- 17. Как отключить кеш-капоад
- 18. Как полностью отключить кеш?
- 19. Как отключить кеш nginx
- 20. Как отключить кеш AFNetworking
- 21. Как отключить кеш?
- 22. Как отключить кеш запросов?
- 23. Как измерить задержку планирования в ядре linux?
- 24. Получить весь кеш в ядре ASP.NET 1
- 25. Как отключить кеш в scrapy?
- 26. Как отключить кеш в symfony
- 27. Как отключить кеш в php
- 28. Отключить кеш?
- 29. Как отключить кеш-кеш при загрузке артефактов?
- 30. Очистить кеш страниц в Rails
Непонятно, что вы просите. Вы хотите отключить кеширование страниц только для одного конкретного приложения в пользовательском пространстве или для всех процессов пользовательского пространства? Вам нужно делать это в самом ядре, или это не имеет значения, как это будет сделано? Предоставьте более подробную информацию, пожалуйста. –
Я просто хочу отключить кеширование страниц для GlusterFS.By Fuse, я установил клиент GlusterFS (nodeA) в/mnt/glusterfs через direct-io-mode (поддерживается FUSE). Когда я открыл файл в GlusterFS, файл не был кэшированный в клиенте GlusterFS (nodeA) из-за прямого режима, поддерживаемого FUSE, но файл был кэширован на сервере GlusterFS (nodeB). Иными словами, на сервере (nodeB) я не хочу кэшировать файл. Итак, вопрос в том, как отключить кеширование страниц для сервера GlusterFS (nodeB)? – user6481589
Открыть файл, запрос был отправлен следующим образом: open (User-Space, nodeA) ---> sys_open (Kernel, nodeA) -----> fuse_open (kernel, nodeA) -------> client_open (пространства пользователя, узел А) ------------> server_open (User-Space, NodeB) -------> sys_open (Kernel, NodeB) ------- > ext4_open (ядро, NodeB). – user6481589