홀 펀칭 지원으로 희소(자동 확장 및 축소) 스왑 파일 생성

홀 펀칭 지원으로 희소(자동 확장 및 축소) 스왑 파일 생성

나는 이런 미친 아이디어를 가지고 있었고 이 접근 방식의 함정(또는 교착 상태 없이 작동할 수 있는지 등)에 대해 궁금했습니다.

목표는 자동으로 확장 및 축소되는 단일 스왑 공간을 만들어 전체 하드 드라이브에 맞는 충분한 용량을 제공하는 것입니다. 여기서 성능은 큰 목표가 아닙니다. 아이디어는 메모리 사용량이 과도하게 발생하는 드문 경우에 대한 버퍼를 제공하는 것입니다.

10GB 하드 드라이브가 있다고 가정합니다. 다음과 같은 방법으로 희소 스왑 파일을 생성할 수 있습니다(BTRFS 스왑 파일 해결 방법에서 파생됨).

swapfile=$(losetup -f)
truncate -s 10G /swap
losetup $swapfile /swap
mkswap  $swapfile
swapon  $swapfile

swapon스파스 파일은 허용되지 않기 때문에 위와 같은 작업을 수행해야 합니다 .

여기에는 두 가지 질문이 있습니다.

  1. 희소성은 조각화를 증가시키며 이로 인해 성능이 저하되지만 제대로 작동하는 것을 방해해서는 안 됩니까?
  2. Sparse 파일은 크기가 줄어들지 않으므로 홀 펀칭(https://stackoverflow.com/a/2026015/582917&https://unix.stackexchange.com/a/52029/56970), 따라서 주기적으로 실행하거나 (아직 시도하지 않음) 스왑 파일에 구멍을 뚫어 사용 후 축소되도록 할 수도 fallocate -d /swap있습니다 fallocate -d $swapfile.

우리는 프로세스(나에게 더 중요함)가 이 교환을 사용할 가능성을 줄이도록 설정 vm.swappiness = 0하거나 만들 수 있습니다.vm.swappiness = 1

마지막으로, 지침에 따르면 최대 절전 모드에서도 작동합니까?https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file?

관련 정보