메모리를 사용하여 Linux에서 IO를 캐시하는 방법이 있습니까?

메모리를 사용하여 Linux에서 IO를 캐시하는 방법이 있습니까?

내 서버에는 메모리가 너무 많습니다. 그러나 IO의 양(매번 매우 작음)이 매우 높습니다.

메모리의 일부를 사용하여 가상 드라이브를 만드는 방법이 있습니까?

SSD도 사용할 수 있다는 것을 깨달았지만 가격이 비쌉니다.

속도와 규모가 필요합니다. 그러므로 기억에만 의존하는 것만으로는 충분하지 않습니다. 자주 액세스하지 않는 데이터는 hdisk에 배치해야 합니다.

답변1

사용 tmpfs. 일반적으로 /dev/shm전체 RAM의 1/2 기본 크기 로 설치됩니다 . 장점은 메모리에 무언가를 넣을 때까지 시스템에서 일반적인 용도로 메모리를 사용할 수 있다는 것입니다(동적으로 예약됨). 기본 설정을 약간 조정하고 싶을 수도 있습니다. 저는 개인적으로 /etc/fstab에 다음을 가지고 있습니다:

tmpfs  /dev/shm  tmpfs  defaults,size=16m   0   0
tmpfs  /free     tmpfs  defaults,size=66%   0   0

이는 두 가지 작업을 수행합니다.

  1. /dev/shm/이를 사용하려는 응용 프로그램을 위해 상당히 작은(16MB) tmpfs를 설치하십시오. 오류로 인한 우발적인 메모리 낭비를 방지하기 위해 크기가 제한됩니다.

  2. 사용 가능한 RAM의 2/3에 tmpfs를 마운트합니다 /free.

파일 시스템 블록 크기는 메모리 페이지 크기와 동일합니다. 메모리 페이지 크기가 큰 아키텍처(예: PowerPC 또는 Itanium)를 사용하는 경우 빈 파일이라도 전체 페이지를 차지합니다. 이러한 오버헤드는 큰 파일을 생성하고 더 작은 블록이 있는 "일반" 파일 시스템을 사용하여 포맷한 다음(예를 들어 XFS는 512B만큼 작은 블록을 사용할 수 있음) 이를 루프에 마운트함으로써 합리적으로 줄일 수 있습니다.

SSD의 경우 RAM보다 훨씬 느리고 어쨌든 캐시되며 삭제 주기 수가 제한되어 있으므로 RAM이 충분할 때 사용할지 여부가 문제입니다. 그건 그렇고, 심지어하드웨어 RAM 드라이버.

답변2

예. 이를 디스크 캐싱이라고 합니다. 자동으로 발생합니다.

I/O가 너무 많으면 프로그램이 제어할 수 없거나, 뭔가 잘못 조정했거나, 시스템에 리소스가 충분하지 않은 것입니다.

파일을 RAM 드라이브에 넣을 수도 있지만 이는 커널이 최근에 사용한 데이터의 캐시를 관리하도록 하는 것보다 거의 항상 더 나쁩니다. RAM 드라이브에 할당된 각 바이트는 응용 프로그램과 디스크 캐시에 훨씬 적게 사용됩니다.

답변3

RapidCache를 살펴보세요!

RapidDisk의 일부입니다. 블록과 파일에 대한 IO 캐싱을 수행하므로(Linux 캐시와 마찬가지로) 가상 머신에 이상적입니다!

http://rapiddisk.org/index.php

관련 정보