커널에서 페이지 캐시를 피하는 방법은 응용 프로그램이 직접 디스크에서 데이터를 쓰거나 읽을 수 있습니까? 커널에서는 어떻게 설정합니까?리눅스 커널에서 페이지 캐시를 비활성화하는 방법은 무엇입니까?
답변
O_DIRECT를 호출하려면 애플리케이션이 필요합니다. 맨 페이지에서 http://man7.org/linux/man-pages/man2/open.2.html
이렇게하면 I/O를 수행하는 동안 페이지 캐시에 쓰거나 읽지 않도록 커널에 알립니다.
O_DIRECT (Linux 2.4.10 이상) 파일과의 I/O 캐시 효과를 최소화하십시오. 일반적으로 성능이 저하되지만 응용 프로그램이 자신의 캐싱을 수행 할 때와 같이 특별한 상황에서 유용합니다. 파일 I/O는 사용자에게 직접 또는 공간에서 수행됩니다. 공간 버퍼. 자체적으로 O_DIRECT 플래그를 사용하면 데이터를 동 기적으로 전송할 때 노력을 기울이지 만 데이터 및 필요한 메타 데이터 이 전송되는 O_SYNC 플래그는 에 대한 보장을 제공하지 않습니다. 동기 I/O를 보장하려면 O_DIRECT 외에도 O_SYNC가 이어야합니다. 아래토론에 대한 자세한 내용은 참고를 참조하십시오.
A semantically similar (but deprecated) interface for block
devices is described in raw(8).
파일 열기, 요청은 다음과 같이 보냈습니다. (User-Space, nodeA) ---> sys_open (Kernel, nodeA) -----> fuse_open (커널, 노드 A) ------ -> client_open (사용자 공간, nodeA) ----- 네트워크 -------> server_open (사용자 공간, nodeB) -------> sys_open (커널, nodeB) -> -----> ext4_open (Kernel, nodeB). 네트워크 전에는 GlusterFS 클라이언트에 속하며 이후에는 GlusterFS 서버입니다. client_open()에 O_DIRECT 플래그를 추가하면 서버가 직접 파일을 열고, io-mode? – user6481589
맙소사, IIUC에서는 gluster FUSE에 마운트 된 네트워크 파일 시스템을 통해 파일을 열고 서버의 페이지 캐시를 사용하지 않고 파일을 열려고하지만 클라이언트가이를 지정할 수있는 방법이 필요합니다. 섬기는 사람. 이 이해가 맞다면 gluster fs 프로토콜 스펙을 읽어서 이런 종류의 애트리뷰트가 서버에 전달되는지 아닌지를 알아야한다고 말할 것이다. –
- 1. 도면 캐시를 비활성화하는 방법은 무엇입니까?
- 2. Dwoo 캐시를 비활성화하는 방법은 무엇입니까?
- 3. __ksymtab은 무엇입니까? 리눅스 커널에서
- 4. 리눅스 커널에서 ohci 디버깅을 활성화하는 방법은 무엇입니까?
- 5. 리눅스 커널에서 kvm 모듈을 수정하는 방법은 무엇입니까?
- 6. 리눅스 커널에서 stop_sched_class의 사용은 무엇입니까
- 7. 리눅스 커널에서 시스템 호출
- 8. 리눅스 커널에서 tty의 역할
- 9. django에서 개발을 위해 캐시를 비활성화하는 방법은 무엇입니까?
- 10. 전체 사이트에서 http 캐시를 비활성화하는 방법은 무엇입니까?
- 11. jqgrid 로컬 캐시를 비활성화하는 방법은 무엇입니까?
- 12. 장고 쿼리 캐시를 비활성화하는 방법은 무엇입니까?
- 13. Django 내부 함수 캐시를 비활성화하는 방법은 무엇입니까?
- 14. Sencha Touch에서 스토리지의 캐시를 비활성화하는 방법은 무엇입니까?
- 15. 프록시 서버 캐시를 비활성화하는 방법은 무엇입니까?
- 16. JavaScript로 Firefox 캐시를 비활성화하는 방법은 무엇입니까?
- 17. CPython 2.7.2에서 메소드 캐시를 비활성화하는 방법은 무엇입니까?
- 18. Opencart 2.0에서 vqmod 캐시를 비활성화하는 방법은 무엇입니까?
- 19. asp.net에서 캐시를 비활성화하는 방법?
- 20. 리눅스 커널에서 stdlib.h 대안?
- 21. 리눅스 커널에서 잠자기하는 법?
- 22. 리눅스 커널에서 생성
- 23. 리눅스 커널에서 인터럽트
- 24. 리눅스 커널에서 파일에 데이터 추가하기
- 25. 리눅스 커널에서 {interrupt do_IRQ} 명령어의 의미는 무엇입니까?
- 26. 리눅스 커널에서 .data와 .long의 의미는 무엇입니까?
- 27. 리눅스 커널에서 커널 주소 공간의 레이아웃은 무엇입니까?
- 28. 리눅스 커널에서 UD2 연산 코드의 목적은 무엇입니까?
- 29. 리눅스 커널에서 dm과 md의 차이점은 무엇입니까?
- 30. __KERNEL__이 (가) 리눅스 커널에서 사용되는 것은 무엇입니까?
당신이 무엇을 요구하고 있는지 분명하지 않습니다. 사용자 공간 또는 모든 사용자 공간 프로세스에서 하나의 특정 응용 프로그램에 대해서만 페이지 캐싱을 비활성화 하시겠습니까? 커널 자체에서이 작업을 수행해야합니까, 아니면 어떻게 수행 될지는 중요하지 않습니까? 더 자세한 정보를 제공하십시오. –
GlusterFS에 대한 페이지 캐싱을 비활성화하고 싶습니다. GlusterFS 클라이언트 (nodeA)를 direct-io-mode (FUSE 지원)를 통해/mnt/glusterfs에 마운트했습니다 .GlusterFS에서 파일을 열었을 때 그 파일은 FUSE에 의해 지원되는 direct-io-mode 때문에 GlusterFS 클라이언트 (nodeA)에 캐시되었지만 파일이 GlusterFS 서버 (nodeB)에 캐시되었습니다. 즉, 서버 (nodeB)에서 파일을 캐시하지 않습니다. 따라서 문제는 GlusterFS 서버 (nodeB)에 대한 페이지 캐싱을 비활성화하는 방법입니까? – user6481589
파일 열기, 요청은 다음과 같이 보냈습니다. open (User-Space, nodeA) ---> sys_open (Kernel, nodeA) -----> fuse_open (kernel, nodeA) -------> client_open (사용자 공간, nodeA) ------------> server_open (사용자 공간, nodeB) -------> sys_open (커널, nodeB) ------- > ext4_open (커널, nodeB). – user6481589