기본 스왑 크기는 얼마입니까?


16

설치 프로그램은 생성 할 스왑 파티션의 크기를 어떻게 계산합니까? 아마도 설치된 RAM 크기를 기반으로하지만 RAM의 양에 따라 달라 집니까?


RAM이 얼마나 많은지에 따라 달라지는 기본값은 없습니다.
Uri Herrera

1
글쎄요.하지만 "의존"보다 좀 더 자세한 내용을 찾고있었습니다. 항상 RAM 크기의 배수로 설정되어 있습니까, 아니면 RAM의 양에 따라 달라 집니까? 예를 들어, 큰 RAM 크기는 최대 절전 모드를 활성화하기에 충분한 양을 필요로하지 않지만 매우 작은 RAM 크기는 1 : 1보다 큰 스왑의 이점을 얻을 수 있습니다.
Seret

답변:


5

실제로 dphys-swapfile기본 Ubuntu 설치 CD 에는 프로그램 이 없으며 스왑 을 계산하는 데 사용되지 않습니다 크기 .

무엇 발생하면 때문이다 ubiquity설치 프로그램이 사용하는 partman-auto스크립트와 구성 파일 (라고 요리법을 모든 파티션의 크기를 결정하기 위해). 다음과 같이 작동합니다.

  • Partman은 컴퓨터 유형 및 사용자가 선택한 옵션에 따라 올바른 레시피 파일을 찾습니다.
  • 여기에서 파티션의 최소 및 최대 크기와 우선 순위를 찾습니다. 들면 스왑 (512) (우선 순위) 300 % (최대) - 96는 (MB의 분) 일 수있다.
  • 그런 다음 RAM 크기를 통해 (를 통해 /proc/meminfo) 가져옵니다 .
  • 자체 알고리즘을 사용하여 크기를 계산합니다.

세부:

레시피 파일은 다음과 같을 수 있습니다 :

1 1 1 free
    $iflabel{ gpt }
    method{ biosgrub } .

500 10000 -1 $default_filesystem
    $lvmok{ }
    method{ format }
    format{ }
    mountpoint{ / } .

96 512 300% linux-swap
    $lvmok{ }
    method{ swap }
    format{ } .

크기를 계산하는 알고리즘 :

for(i=1;i<=N;i++) {
   factor[i] = priority[i] - min[i];
}
ready = FALSE;
while (! ready) {
   minsum = min[1] + min[2] + ... + min[N];
   factsum = factor[1] + factor[2] + ... + factor[N];
   ready = TRUE;
   for(i=1;i<=N;i++) {
      x = min[i] + (free_space - minsum) * factor[i] / factsum;
      if (x > max[i])
         x = max[i];
      if (x != min[i]) {
         ready = FALSE;
         min[i] = x;
      }
   }
}

자세한 내용은 다음을 참조하십시오.


흥미로운 토론 : 이상한 데비안 웹 사이트보다 더 좋은 참고 자료가 있습니까?
enzotib 2016 년

글쎄, 나는 그것을 검색했을 때도 패키지에 "경고 :이 패키지는 debian-installer 이미지를 빌드하기위한 것입니다. 일반적인 우분투 시스템에는 설치하지 마십시오"라는 것을 알았습니다. 나는 이것이 사용되지 않았다고 가정하여 검색하고 dphys-swapfile> :-D Hmm에 대한 코드를 실제로 찾았습니다.
Rinzwind 2016 년

@enzotib : 왜 이상해?
정렬

@arrange : 공식 우분투 사이트가 아니기 때문에 이상하고, 데비안 사이트는 공식 사이트가 아닌 것 같습니다.
enzotib 2016 년

스왑 크기 D를 계산하는 두 가지 방법을 찾았습니다.이 방법은 grep ^ Mem : / proc / meminfo를 사용하거나 0 grep ^ MemTotal : / proc / meminfo 인 경우 2 (기본값) 또는 3을 곱합니다 (대부분은 아키텍처 당 최소 300 %). mipsel-sb1-bcm91250a는 고정 512를 사용합니다. i386-efi는 200 %를 사용합니다.
Rinzwind 2016 년

19

이것은 다소 기술적 인 것이지만 여기서 알아내는 것은 재미있었습니다 ...

  • 패키지를 찾았는데 dphys-swapfile여기 소스 코드가 있습니다. 옵션 setup은 다음을 설정하는 데 사용됩니다.
setup-최적의 스왑 파일 크기를 계산하도록 dphys-swapfile에 지시합니다.
피팅 스왑 파일을 다시 생성합니다. 기본 RAM 크기는 2 배입니다.
부팅시 호출 할 수 있으므로 파일은 항상
현재 RAM에 적합한 크기이거나 RAM 크기가있을 때마다 수동으로 실행
변경되었습니다.
  • 내부 dphys-swapfileconf_swapsize사전 정의 된 크기에 대한 설정 입니다 (Natty에서는 비어 있음).
우리가 강제로하고 싶은 크기, 기본값 (빈)은 2 * RAM을줍니다.
CONF_SWAPSIZE =

그리고 설정 swapfactor...

this is what we want, 2 times RAM size
SWAPFACTOR=2
  • 실제 크기는 다음과 같이 조금 더 계산됩니다.

    [ "$ {CONF_SWAPSIZE}"= ""] 인 경우; 그때
      # 자동 최적 크기 계산
      echo -n "계산 크기"
      # 이것은 실제 RAM 크기에 가장 가까운 것 같습니다. 약 60k가 부족합니다.
      KCORESIZE = "`ls -l / proc / kcore | awk '{print $ 5}'`"
      # 반올림 한 MBytes가 정확히 1이 너무 적도록 1을 추가하십시오.
      MEMSIZE = "`expr"$ {KCORESIZE} "/ 1048576 + 1`"
      # 기본값, 구성 파일 덮어 쓰기 없음, swap = 2 * RAM
      CONF_SWAPSIZE = "`expr"$ {MEMSIZE} " '*'"$ {SWAPFACTOR} "`"
    fi

이 패키지에서 계산하는 방식은의 크기에 따라 다르지만 /proc/kcore1048576, +1로 나눠서 반올림 한 다음 swapfactor를 곱합니다. 내 컴퓨터에서 :

여기에 이미지 설명을 입력하십시오

따라서이 시스템의 기본값은 1065349120/1048576 = 1015 + 1 = 1016 * 2 = 2032MB입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.