내 SSD는 2TB PCIe 3.0 x4 M.2 NVMe(한국 브랜드인 Mega Fastro MS200, 독일에서 100달러 미만에 판매됨)입니다. Windows smi_nvme_flash_id.exe 유틸리티에 따르면 Intel 96L TLC NAND 및 2G DRAM 캐시를 갖춘 SM2262EN 컨트롤러입니다. 펌웨어 버전 42AAT7GD. 이는 CPU에 직접 연결된 내부 소켓에 있습니다.
성능 테스트를 위해 수백 GB의 /dev/random 데이터로 채웠습니다. 이상한 점은 임의의 데이터를 읽는 속도입니다.
PC를 켜고 ArchLinux(6.2.8 커널)로 직접 부팅하면 읽기 속도가 매우 빠릅니다.
# echo 3 > /proc/sys/vm/drop_caches
# cat /dev/nvme0n1p1 |
( pv -S -s 222G > /dev/null
hexdump -C -n 32 )
222GiB 0:01:35 [2.34GiB/초] [===================================== === === =>]100%
00000000 b2 ce c5 36 de 56 bd 05 1f 65 82 8e 1c 23 18 07 |...6.V...e...#..|
00000010 03 0e b1 44 ec 6c 2c b0 64 47 d5 47 a6 59 cc 8b |...D.l,.dG.G.Y..|
00000020
> dev/null 대신 md5sum을 사용하여 항상 동일한 임의의 데이터를 읽는지 확인할 수 있습니다. 단지 md5sum이 devnull보다 약간 느리다는 것뿐입니다.
그러니 빼고는 다 괜찮아요. Windows 10으로 재부팅한 다음 다시 Linux로 재부팅하는 경우. 다른 작업을 수행할 필요가 없습니다. 정확히 동일한 프로세스의 읽기 속도가 갑자기 1GiB/s 미만으로 제한됩니다.
222G의 데이터는 내 RAM을 훨씬 초과하므로 캐시와 관련이 없습니다. 온도는 정상 범위(부하 시 최대 80°C) 내에서 유지됩니다. 쿨러를 추가해 보려고 하는데, 효과가 있을지 의문입니다. 위 명령을 연속해서 여러 번 반복할 수 있으며 온도가 이미 높은 경우에도 항상 빠르게 유지됩니다. Windows(SSD에 저장되지 않음)로 재부팅된 항목이 있으면 냉각될 시간이 필요합니다.
lspci 출력은 변경되지 않았으며 장치가 PCIe 3.0 x4 모드에서 실행되고 있음을 보여줍니다. dmesg는 변경되지 않습니다. /sys/block/nvme0n1/** 변경되지 않은 상태로 유지됩니다. smartctl -a는 변경되지 않습니다. 어디를 봐야할지 모르겠습니다.
다시 시작해도 여전히 느립니다. 머신을 종료했다가 다시 켜고 Linux를 시작하면 훨씬 더 빠른 속도로 돌아옵니다. Linux로 재부팅하고 빠르게 유지하세요. Windows를 다시 시작한 다음 Linux를 다시 시작했는데 속도가 느려졌습니다.
Windows가 Linux로 재부팅한 후에도 지속되는 일종의 제한을 설정할 수 있습니까? 그렇다면 콜드부팅 없이 초기화할 수 있는 방법은 없을까요?