프로그래밍과 약간 관련이 있지만 대부분 ext4 작동 방식과 관련된 질문이 있습니다.
파일에 128MB를 쓰고 오프셋을 임의 정렬로 변경하는 프로그램이 있습니다. 내가 작성하는 모든 쓰기 호출은 256KB를 씁니다. 이제 두 장치의 속도 결과가 눈에 띄게 다릅니다.
/dev/sda
두 개의 ext4가 있고 /dev/sdb
sda는 8GB이고 sdb는 512MB입니다.
예를 들어 의 쓰기 작업은 /dev/sda
완료하는 데 0.7초가 걸리는 반면, 의 동일한 쓰기 작업은 완료하는 데 0.05초가 걸립니다 /dev/sdb
. 두 파티션 모두 SSD가 아닌 동일한 하드 드라이브에 있습니다.
편집하다:죄송합니다. 추가하는 것을 잊어버렸습니다. 이는 VirtualBox 가상 머신에서 실행되고 있으며 호스트는 Windows 시스템입니다. 내 노트북에는 물리적 드라이브가 하나만 있기 때문에 확실히 물리적 드라이브가 하나뿐입니다.
편집 2:문제를 발견했습니다. "/dev/sda"라고 생각한 프로그램을 실행하고 있었는데, 그것은 호스트 시스템에서 마운트한 공유 폴더였습니다. 파일 시스템이 다를 줄은 몰랐습니다.
성능에 큰 변화를 가져올 수 있는 뒤에서 무슨 일이 일어나고 있는지 알고 싶습니다. 감사합니다!
답변1
여기서 리뷰하기에는 너무 길기 때문에…
내 관심을 불러일으킨 두 가지 사항은 다음과 같습니다.
첫째, /dev/sda와 /dev/sdb는 서로 다른 두 개의 물리적 드라이브입니다. 그렇지 않으면 /dev/sda1과 /dev/sda2에 대해 논의하게 됩니다. 따라서 서로 다른 물리적 드라이브에 대해 이야기하면 성능이 달라질 수 있습니다.
둘째, 이 정보가 잘못되었고 동일한 드라이브에 두 개의 파티션(/dev/sda1 및 /dev/sda2)이 있는 경우 물리적 드라이브 크기는 얼마입니까? 2TB보다 큰 파티션이 있는 드라이브는 올바르게 정렬되어야 합니다. 그렇지 않으면 성능 문제가 발생합니다. 파티션 중 하나는 정렬되어 있고 다른 하나는 정렬되어 있지 않습니까? 프로그램 외에 다른 수단을 통해 파티션 속도를 테스트해 보셨나요? 확인하다이것주행 속도를 테스트해 보세요.