2013-09-25 1 views
0

모두. 나는 다음 질문에 붙어있다.회수하기 전에 캐시 된 페이지를 작성하십시오.

하드 디스크의 캐시 계층으로 ssd를 사용하는 하이브리드 스토리지 시스템에서 작업하고 있습니다. 이를 위해 하드 디스크에서 읽은 데이터를 ssd에 기록하여이 데이터의 후속 읽기를 향상시켜야합니다. 리눅스는 디스크에서 읽은 데이터를 페이지 캐시에 캐시하기 때문에 ssd에 대한 데이터 쓰기가 지연 될 수 있습니다. 그러나 데이터를 캐싱하는 페이지는 해제 될 수 있으며 해제 된 페이지에 액세스하는 것은 권장되지 않습니다. 다음은 질문입니다. "struct page"포인터가 ssd에 쓰여질 페이지를 가리키고 있습니다. 포인터로 표현 된 페이지가 유효한지 아닌지를 판단 할 수있는 방법이 있습니까? (유효하면 캐시 된 페이지를 ssd에 안전하게 쓸 수 있습니다.) 포인터를 통해 해제 된 페이지에 액세스하면 어떻게됩니까? 해제 된 페이지와 동일?

답변

0

당신이 cleancache 모듈을 사용하고 해제하기 전에? 당신은 단지 그것을 유효 페이지를 받아야하고 콜백 함수가 완료 때까지 유효합니다.

0

이 아닌가 이것을 cleancache/(https://www.kernel.org/doc/Documentation/vm/cleancache.txt)

기존의 클린 캐쉬 코드의 이점은 페이지가 해제되기 바로 전에 코드를 호출하므로 페이지가 RAM에 상주하기 전에 RAM에 남아있는 공간이 없으면 커널은 tmem (일시적인 메모리)에 코드를 백업합니다. http://bcache.evilpiepirate.org/ :

Bcach 읽기는 리눅스 커널 블록 계층 캐시입니다

검색은 또한 정확하게이 작업을 수행 할 것으로 보인다 기존 프로젝트를 발견했다. 플래시 기반 솔리드 스테이트 드라이브 (SSD)와 같은 하나 이상의 고속 디스크 드라이브가 하나 이상의 저속 하드 디스크 드라이브에 대해 캐시로 작동 할 수 있습니다.

Linux 커널 용 Bcache 패치는 SSD를 사용하여 다른 블록 장치를 캐시 할 수있게합니다. ZFS의 경우 L2Arc와 유사하지만 Bcache도 은 쓰기 캐시 (write through caching) 외에도 파일 시스템 불가지론 ( )입니다. 최소 의 노력으로 스위치를 켜고 모든 설정에서 구성없이 잘 작동하도록 설계되었습니다. 기본값으로 순차 IO를 캐시하지 않으며 SSD를 능가하는 임의의 읽기 및 쓰기 을 작성합니다. 데스크톱, 서버, 고급 스토리지 배열 에 적합하고 임베디드 환경에 적합하도록 설계되었습니다. 다음과 같은 외모를 달성하기 위해 노력하고 무엇

+0

답장을 보내 주셔서 대단히 감사합니다. 사실 내 구현은 Bcache와 비슷한 목적을 가진 flashcache를 기반으로합니다. 다음은 좀 더 구체적인 질문입니다. – user2813839

+0

깨끗한 페이지를 작성하려면 해당하는 BIO 구조가 있어야합니다. 그러나 BIO를 대기열에 대기시켜 제출을 지연시키고 싶습니다. 내 질문은 : 1) BIO가 대기열에있을 때 페이지가 수정되어 더러워 질 수 있습니까? 2) 쓰기 되돌림은 페이지의 수정 된 부분을 디스크 또는 전체 페이지에만 기록합니까? 3) 대기열에있는 동안 페이지가 깨끗하면 페이지를 해제 할 수 있습니까? @lsk – user2813839

0

: 페이지가 페이지 캐시에서 제거됩니다

  • 하기 전에, 당신은 그것을 캐시합니다. 이 개념을 피해자 캐시라고합니다. 이 문제에 관한 논문을 찾을 수 있습니다.
  • IO가 실행되는 동안 퇴거 대상 페이지를 "고정"하는 방법이 필요합니다. IO를 게시하면 pagecache 페이지를 해제 할 수 있습니다.
  • 그러나 이렇게하면 캐시되지 않은 페이지를 만들기 위해 메모리 압력 중 필요할 수있는 축출이 지연됩니다.
  • 따라서 가능한 한 가지 해결책은 페이지 캐시 퇴거가 시작되기 전에 캐싱 알고리즘을 조금 시작하는 것입니다.
  • 두 번째 가능한 해결 방법은 빈 페이지를 따로 설정하고 페이지 캐시에서 축출 된 페이지를 사용 가능한 풀의 페이지와 교환하고 축출 된 페이지를 백그라운드에서 캐시하는 것입니다.그러나 이제 파일 차단 삭제 등과 동기화해야합니다.
관련 문제