bittorrent 기반에서는 캐시와 디스크 과부하 관련 설정이 상당히 많은 편인데, libtorrent 기반은 별로 그래보이지 않는다. libtorrent 기반인 qbittorrent에서 관련 설정이 애매해서 찾아보았다.

어느 토렌트 방식이던간에 그 특유의 공유 원리 때문에 램, 디스크 과부하가 종종 발생하기때문에 그 관련 설정을 요약해두기로 한다.

Qbittorrent

뮤토렌트에서 파일을 받을 때 디스크 공간을 미리 잡아주는 설정이 있었다. diskio.no_zero, diskio.Sparse_Files 등.. qbittorrent에선 libtorrent 설정에선 보이지 않지만 'Downloads' 설정 탭에서 'Pre-allocate Disk Space'라는 옵션을 발견할 수 있었다. 이 옵션은 하드의 단편화와 관련이 있다. 공간을 미리 할당해서 저장을 하면 하드디스크 쓰기를 하고 시작하니 단편화는 줄어들지만 부하는 증가하게된다. 잡아둔 공간을 0으로 채우는것 (zero-filling)이 부하를 잡아먹는다는 문제다. diskio.no_zero나 sparse_files 옵션은 이 문제를 해결하는 옵션이라 부하가 증가하는 문제는 많이 해결하였다. qbittorrent 상에서는 pre-allocate disk space 옵션을 활성화하지 않으면 sparse_files등으로 부하가 안가는 정책을 사용하는 것으로 보인다. 옵션 자체의 의미는 하드디스크 단편화가 중점인지라, SSD일 경우 의미가 거의 없는 옵션이다.

뮤토렌트에서는 디스크 캐시 설정 탭이 되게 자세했었는데 qbittorrent는 그렇지 않다. libtorrent 설정 탭을 가보면 Disk Cache와 수치 입력이 끝이다. 0을 입력하면 비활성화 된다. 64MB가 기본값이지만 대부분 1GB로 사용한다. 디스크 캐시는 그 자체로 하드에 기록하기 전 메모리에 일단 파일을 저장하는 것이므로, 메모리 부하는 늘리고 디스크 부하는 줄인다. 때문에 대부분 사용중이고 qbit에서도 기본값으로 활성화되어있다. 뮤토렌트의 경우 읽기, 쓰기로 분화되어 자세했지만 이게 끝이다. 그 아래 Disk cache expiry interval 옵션은 캐시가 가득차기 전에도 갱신하도록 갱신 주기를 설정해주는 옵션이다. 나는 기본값으로 두었다.

qbittorrent의 libtorrent 설정에는 os cahce를 사용할 것인지 묻는 것도 있다. 아마도 뮤토렌트에서 'Windows Caching of DIsk' 옵션을 이야기하는 것이라 생각한다. OS도 디스크 캐시로서 메모리를 이용하는데, 윈도우의 경우 흔히 말하는 페이징파일로 급작스럽게 램 사용이 늘어나거나 할 경우 시스템 디스크를 일부 램처럼 사용해서라도 속도를 늦출지언정 프리징 현상을 막는데, OS cache를 사용하게 되면 이런 관리 방식에 따라 torrent가 사용하는 램이 과부화될수록 다시 시스템 디스크에 부하를 줄 수 있다. 따라서 이 옵션은 램 부담이 많다면, 디스크 부하 증가라고 생각해볼 수 있다. 

물론 과부하를 감안한 설정을 하면 속도는 더욱 나아진다. 하지만 대개 속도가 필요없다면 안정적인 설정을 하는것이 낫다고 생각한다. 즉, 각각 비활성화, 활성화, 비활성화로 두는 것.

참고한 글들

과거 버전을 보면 libtorrent 문제로 비정상적인 하드 점유율이 있었던 것 같으나, 설정의 특성들만 참고.

  • https://github.com/qbittorrent/qBittorrent/issues/8273
    하드 사용률이 지나치게 높은 문제 - 디스크캐시 활성화, OS캐시 비활성화
  • https://github.com/qbittorrent/qBittorrent/issues/8756
    exFAT 시스템에서 하드 사용률이 지나치게 높은 문제 
  • https://github.com/qbittorrent/qBittorrent/issues/8630
    Disk cache와 OS cache 옵션별 램 비정상적 사용 문제
  • https://github.com/qbittorrent/qBittorrent/wiki/Explanation-of-Options-in-qBittorrent
    qbittorrent 설정에 관한 공식 해설
  • https://qbforums.shiki.hu/index.php?topic=2908.0
    qbittorrent 상에서는 allocate all files를 활성화하지 않으면 sparse files로 작동하는 것으로 보인다. fat시스템에선 sparse files를 지원하지 않는다.
  • https://kbtuf.com/advanced_tips_lessons/513
    뮤토렌트 상에서 bittorrent 설정 해석. pre-allocate all files가 단편화를 방지하기 위해 나타났지만 하드 사용률이 문제가 되었다면, 그걸 점차 줄이는게 sparse files와 같은 것이라 보인다.