unzip
큰 파일의 압축을 풀고 있습니다 . 하지만 내 CPU 사용량은 15% 미만이고 RAM은 8GB 중 1~1.2GB만 활용하고 있습니다.
unzip
이 프로그램에 더 많은 CPU 성능과 RAM을 할당할 수 있는 방법이 있습니까 ?
감사해요.
루분투 16.04를 사용하고 있습니다
답변1
프로그램은 내장된 제한이 없는 한 얻을 수 있는 모든 메모리와 CPU 성능을 사용합니다. unzip
그러한 기본 제공 제한은 없습니다. 적게 줄 수는 있지만 더 줄 수는 없습니다. 기본적으로 원하는 만큼 가져갈 수 있기 때문입니다.
압축 해제는 메모리를 많이 사용하는 프로세스가 아닙니다. 대용량 아카이브의 압축을 풀 때의 주 메모리 비용은 압축을 풀면 파일 목록이 메모리에 유지된다는 것입니다.
속도를 제한하는 요소는 CPU 성능이나 디스크(또는 네트워크를 통해 파일을 읽거나 쓰는 경우 네트워크)일 수 있습니다. 이는 CPU 대비 디스크 속도에 따라 달라집니다. 프로세스가 100% 점유되었는지 확인하나핵무기. 그렇지 않다면 속도를 높이는 유일한 방법은 입력/출력 속도를 높이는 것입니다. 이는 더 빠른 디스크를 의미하거나 입력과 출력을 다른 디스크에 배치하도록 배열하는 것을 의미할 수 있습니다.
프로세스가 하나의 코어를 100% 차지한다면 병렬화를 통해 속도를 높일 수 있습니다. 많은 압축 형식과 마찬가지로 파일의 압축 풀기는 형식의 적응성이 높기 때문에 본질적으로 병렬화가 불가능합니다. 압축은 반복 패턴을 찾고 이를 이전 패턴에 대한 간접적인 참조로 대체하여 달성됩니다. 일부 압축 형식에는 각 청크를 독립적으로 압축 해제할 수 있는 "재초기화 지점"이 있습니다. 나는 bzip2가 최소한 이 작업을 수행한다는 것을 알고 있습니다. 일부 압축 도구는 해당 형식에서 필요하지 않더라도 이 작업을 수행합니다. 하지만 내가 아는 한 zip의 경우는 그렇지 않습니다. 반면, Zip은 아카이브의 각 구성원을 개별적으로 압축하므로 각 파일을 독립적으로 압축 해제할 수 있습니다. 그래서 만약 당신이N코어가 있으면 개별 파일의 압축을 풀느라 바쁜 상태를 유지할 수 있습니다(I/O가 충분히 빠른 경우).
문제는 병렬 압축 해제 구현을 찾는 것입니다. 제 생각에는p7zip7z x -mmt=on foo.zip
또는 (8개 코어 사용) 사용에 대한 지원이 있지만 7z x -mmt=8
p7zip에 대한 문서는 그리 좋지 않으며 이것이 실제로 병렬화될 수 있는지 확인하지 못했습니다.
답변2
(다른 답변에는 댓글을 추가할 수 없기 때문에)
htop
프로세스 정보를 보기 위한 도구 중 하나입니다. "S" 열(상태)에 "D"가 표시되면 프로세스가 차단되고 일반적으로 I/O 작업이 완료될 때까지 기다립니다. 이 병목 현상을 해결하려면 네트워크 또는 스토리지 대역폭(예: RAID 또는 더 빠른 HDD/SSD/NVMe)을 늘리십시오.
iotop
이러한 병목 현상을 감지하는 또 다른 유용한 도구는 프로세스에 대한 100% I/O 사용량을 표시합니다.
답변3
병렬 압축/압축 해제를 위해 모든 CPU 코어를 사용하는 Pigz를 사용할 수 있으며, unpigz를 사용한 압축 해제는 한 지점에서 직렬이지만 향상되었다고 생각합니다. 정말 멋지네요