ramfs와 tmpfs의 성능 차이 파일 시스템처럼 작동 한다는 것을 알고 있습니다.

많은 100kb 단일 파일 (이미지)로 구성된 약 10GB의 데이터에 대해 메모리 저장 시스템을 설정해야합니다. 많은 읽기와 상당히 정기적 인 쓰기가있을 것입니다 (새 파일 추가, 일부 오래된 파일 삭제).
이제 tmpfs 가 예를 들어 df로 여유 공간 / 사용 공간을 확인할 수있는 일반 파일 시스템처럼 작동 한다는 것을 알고 있습니다. 그러나 나는 램프 가 IO 작업 속도와 관련하여 몇 가지 장점을 제공 하는지에 관심 이 있습니다. 나는 램프를 사용할 때 소비되는 메모리의 크기를 제어 할 수없고 여유 RAM을 완전히 소비하면 시스템이 멈출 수 있지만이 시나리오에서는 문제가되지 않는다는 것을 알고 있습니다.

요약하면, 나는 관심이 있습니다 :
-성능 현명한, 어느 쪽이 더 빠릅니다 : ramfs 또는 tmpfs (그리고 아마도)? -tmpfs
는 언제 스왑 공간을 사용합니까? 이미 저장된 데이터를 스왑 (현재 실행중인 다른 프로그램의 RAM을 확보하기 위해)으로 옮기거나 여유 RAM이없는 경우 새 데이터 만 이동합니까?



답변

내 추천 :

정상적인 조건에서 실제 활동을 측정하고 관찰하십시오.

이러한 파일이 모두 필요한 것은 아니며 캐시에서 항상 제공 될 수 있습니다. 그러나 주어진 순간에 캐시에 무엇이 있는지 알려주 는 vmtouch 라는 멋진 도구 가 있습니다. 또한 특정 디렉토리 나 파일을 캐시에 잠그는 데 사용할 수도 있습니다. 정기적으로 사용한 후에는 어떤 모양인지 확인하십시오. 이 상황에서는 tmpfs 및 ramfs를 사용할 필요가 없습니다.

참조 : http://hoytech.com/vmtouch/

가장 활동적인 파일이 이미 캐시에 상주한다는 사실에 놀랄 것입니다.


tmpfs와 ramfs에 대해서는 성능 차이가 눈에 띄지 않습니다. 작동상의 차이점이 있습니다. 실제 사용 사례는 Oracle이며, RAM이 스왑의 위험없이 RAM에서 데이터를 관리 할 수 ​​있도록 ramfs를 사용했습니다. 메모리 부족으로 tmpfs 데이터를 교체 할 수 있습니다. 설정의 크기 조정 및 수정에는 차이가 있습니다.


답변

이것을 지나치게 생각하지 마십시오. 시스템에 충분한 RAM을 넣고 커널의 디스크 캐시가 처리하도록하십시오. 이렇게하면 디스크에서 데이터를 계속 유지하면서 메모리에서 직접 읽을 수있는 이점을 얻을 수 있습니다.


답변

1) 성능 벤치 마크.

이 페이지를 참조 로 사용하여 tmpfs와 ramfs간에 I / O 비교를 수행 한 결과 성능 측면에서 거의 동일합니다.

# !mount
mount | grep -E "tmp|ram"
tmpfs on /dev/shm type tmpfs (rw)
ramfs on /mnt/ram type ramfs (rw,size=1G)

# dd bs=1M count=1024 if=/dev/zero of=/dev/shm/test conv=fdatasync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.634054 s, 1.7 GB/s

# dd bs=1M count=1024 if=/dev/zero of=/mnt/ram/test conv=fdatasync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.559557 s, 1.9 GB/s

# dd bs=1M count=4096 if=/dev/zero of=/dev/shm/test conv=fdatasync
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB) copied, 2.5104 s, 1.7 GB/s

# dd bs=1M count=4096 if=/dev/zero of=/mnt/ram/test conv=fdatasync
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB) copied, 2.36923 s, 1.8 GB/s

2) 이 페이지 에 따르면 tmpfs는 swap을 사용하고 ramfs는 swap을 사용하지 않습니다.


답변

다양한 커널 버퍼를 호스팅하기에 충분한 양의 RAM이 설치되어 있으면 응용 프로그램 스택 및 힙, 일반 파일 시스템 캐시 및 여기에 넣을 모든 파일이 위험 ramfs하지 않을 정도로 느려서는 안됩니다. tmpfs설계 상 물리적 I / O. 물리적 I / O는 의심 할 여지없이 해당 영역에서 성능 저하의 주요 원인입니다.

그러나 RAM 용량이 설치되어 있지 않은 경우 , 후자는 가상 메모리 휴리스틱을 사용하여 디스크 (즉, 스왑 영역)와 RAM에 무엇이 더 나은지를 결정하기 위해 가상 메모리 휴리스틱을 사용하는 ramfs것보다 느릴 tmpfs수 있습니다. 로 tmpfs파일 시스템 데이터가 RAM에 멈춰 있으면 리소스가 낭비 될 수 있습니다.

두 번째 질문에 대답하기 위해, 예 tmpfs. 마지막 “핫”데이터가 아닌 이전 데이터를 먼저 스왑 영역으로 이동합니다.