읽기 속도가 약 40MB/초인 단일 USB 연결 4TB 회전 디스크가 포함된 테스트 zpool을 설정했습니다.
이 디스크의 캐시로 설정된 4개의 ~300GB 고속 SATA2 내부 SSD가 있습니다. 이 L2ARC에서 약 900MB/초를 읽을 수 있습니다.
이 풀에서 대부분 정적인 400GB 데이터세트를 읽고 있습니다.
시스템에는 200GB 이상의 사용 가능한 메모리가 있으며 우리 목적에 따라 1500MB/초 이상으로 실행되는 것으로 생각됩니다.
Every 1.0s: zpool iostat -y -v 1 1 ; zpool status -v las2: Tue Oct 16 20:20:07 2018
capacity operations bandwidth
pool alloc free read write read write
-------------------------------------------------- ----- ----- ----- ----- ----- -----
storage 417G 3.22T 239 2 29.7M 132K
usb-Seagate_M3_Portable_NM12QHQF-0:0-part1 417G 3.22T 239 2 29.7M 132K
cache - - - - - -
ata-INTEL_SSDSC2BA400G3_BTTV41450D92400HGN-part3 52.8G 291G 11 0 927K 128K
ata-INTEL_SSDSC2BA400G3_BTTV423000XA400HGN-part3 52.9G 291G 13 0 1.48M 0
ata-INTEL_SSDSC2BA400G3_BTTV423406FG400HGN-part3 52.7G 291G 8 0 324K 0
ata-INTEL_SSDSC2BA400G3_BTTV423406G6400HGN-part3 52.9G 291G 5 0 336K 0
-------------------------------------------------- ----- ----- ----- ----- ----- -----
pool: storage
state: ONLINE
scan: scrub repaired 0B in 1h56m with 0 errors on Sun Oct 14 02:20:56 2018
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
usb-Seagate_M3_Portable_NM12QHQF-0:0-part1 ONLINE 0 0 0
cache
ata-INTEL_SSDSC2BA400G3_BTTV41450D92400HGN-part3 ONLINE 0 0 0
ata-INTEL_SSDSC2BA400G3_BTTV423000XA400HGN-part3 ONLINE 0 0 0
ata-INTEL_SSDSC2BA400G3_BTTV423406FG400HGN-part3 ONLINE 0 0 0
ata-INTEL_SSDSC2BA400G3_BTTV423406G6400HGN-part3 ONLINE 0 0 0
errors: No known data errors
AIUI, 읽기는 시스템 메모리의 ARC에 캐시됩니다. 특정 수준의 "가득 참"에 도달하면 이 데이터는 L2ARC(1.1TB 고속 SSD)로 이동됩니다.
이 풀의 거의 일정한 디렉터리 중 하나에서 실행하면 tar -c . | pv > /dev/null
기본 느린 HDD에서 읽는 속도인 약 40MB/초를 볼 수 있습니다.
문제는 나도 그것을 두 번째로 봤다는 것이다! 때로는 80-100MB/초까지 치솟기도 하지만 때로는 10MB/초로 떨어지는 경우도 있습니다. 나는 99%의 읽기가 메모리나 빠른 L2ARC에서 나올 것으로 예상합니다.
무엇을 제공합니까? 이 상자에는 256GB의 시스템 메모리가 있고 그 중 200GB 이상이 무료이므로 RAM 속도를 확인하고 싶습니다. 이것이 실패하면 수백 GB의 L2ARC가 사용되지 않은 상태로 유지됩니다.
내가 뭘 잘못했나요? 이 데이터를 매우 빠른 속도(>1GB/초)로 ARC에서 읽을 수 없는 이유는 무엇입니까? 이것이 가능하지 않다면 L2ARC(>500MB/초)에서 읽어보는 것은 어떨까요? 대부분의 제거된 시스템에서 40-80MB/초가 표시되는 이유는 무엇입니까?
Ubuntu bionic 18.04.1 x86_64 system.
Linux las2 4.15.0-36-generic #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
zfs-auto-snapshot/now 1.2.4-1 all [installed,local]
zfs-zed/now 0.7.5-1ubuntu16.4 amd64 [installed,local]
zfsutils-linux/now 0.7.5-1ubuntu16.4 amd64 [installed,local]
답변1
여기에는 두 가지 문제가 있습니다.
첫째, 데이터 세트가 메모리에 맞지 않아 LRU(Least Recent Used)를 기준으로 제거됩니다. 이는 전체 데이터 세트를 실행한 후 처음부터 시작하면 찾고 있는 항목 중 어느 것도 ARC에 포함되지 않음을 의미합니다.
두 번째 문제는 L2ARC가 생각하는 대로 채워지지 않는다는 것입니다. ARC에서 데이터가 제거되면 채워지지만 채우기 속도가 제한됩니다. 기본 제한은 8MB/S로 두 번째 읽기에 약간의 영향을 미칠 것입니다. 이 문제를 해결하려면 "l2arc_write_max" 및 "l2arc_write_boost" ZFS 매개변수를 확인해야 한다고 생각합니다.