Systemd-swap: μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œκ°€ 정말 λΆˆκ°€λŠ₯ν•©λ‹ˆκΉŒ?

에 λ§Œλ“  2019λ…„ 09μ›” 28일  Β·  7μ½”λ©˜νŠΈ  Β·  좜처: Nefelim4ag/systemd-swap

Q :이 κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œλ₯Ό ν™œμ„±ν™” ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?
A : μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œλŠ” 영ꡬ fs 블둝을 μ›ν•˜κ³  λ””μŠ€ν¬μ—μ„œ 직접 μŠ€μ™‘ 데이터에 μ•‘μ„ΈμŠ€ν•˜κΈ°λ₯Ό μ›ν•˜λ―€λ‘œ zram, swapfu, swapfc (λ¬Όλ‘  λ§ˆμˆ μ—†μ΄)μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λΆ„λͺ…νžˆ νŒŒν‹°μ…˜ λŒ€μ‹  μŠ€μ™‘ νŒŒμΌμ„ μ‚¬μš©ν•˜λŠ” μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œκ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€. 일반 μŠ€μ™‘μ„μœ„ν•œ zramκ³Ό μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œλ₯Όμœ„ν•œ μŠ€μ™‘ νŒŒμΌμ„ μ‚¬μš©ν•˜λŠ” μ†”λ£¨μ…˜μ΄ λ°”λžŒμ§ν•©λ‹ˆλ‹€.

κ·Έλ ‡λ‹€λ©΄ μž‘λ™ν•˜λ €λ©΄ μ–΄λ–€ μ’…λ₯˜μ˜ λ§ˆλ²•μ΄ ν•„μš”ν• κΉŒμš”?

enhancement help wanted

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

systemd-swap이 μ‹œμž‘λ  λ•Œ μ‹œμŠ€ν…œμ΄ μ‚¬μš© κ°€λŠ₯ν•œ λͺ¨λ“  λ©”λͺ¨λ¦¬λ₯Ό μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œλ‘œ μ „ν™˜ ν•  수 μžˆλ„λ‘ μΆ©λΆ„ν•œ μŠ€μ™‘ νŒŒμΌμ„ 포맷 및 μŠ€μ™‘ν•˜λŠ” μ˜΅μ…˜μ΄ μžˆλ‹€λ©΄ μ–΄λ–»κ²Œλ©λ‹ˆκΉŒ? 그리고 bootctl ν˜ΈμΆœμ„ μˆ˜ν–‰ν•˜κ±°λ‚˜ μ–΄λ–€ μ’…λ₯˜μ˜ κ³ μ • 된 μœ„μΉ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄ systemctl-boot λ˜λŠ” rEFInd λ˜λŠ” grub λ“±μ˜ 컀널 cmdline에 λŒ€ν•œ 정보λ₯Ό μŠ€μ™‘ 파일의 데이터에 μ•‘μ„ΈμŠ€ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

그런 μ‹μœΌλ‘œ, μœ μΌν•œ μ‹€μ œ 지연은 zram μ‚¬μš©μ˜ λΆˆκ°€ν”Όν•œ λΆ€λΆ„ 인 zram을 κ΅μ²΄ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

λ‚΄κ°€ μƒκ°ν•œ κ²ƒμ²˜λŸΌ μ‹œμž‘μ‹œ μŠ€μ™‘μ„ 이미 미리 ν• λ‹Ήν•˜λ €λŠ” 경우 유용 ν• λ§ŒνΌ μΆ©λΆ„νžˆ ν• λ‹Ή ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  7 λŒ“κΈ€

@TeslaBargain , μΌμ’…μ˜ 검은 뢀두 λ§ˆλ²•.

λ¬Όλ‘  그것은 λ‹Ήμ‹  슀슀둜 ν•  수 μžˆμŠ΅λ‹ˆλ‹€-κ·Έλž˜μ„œ λ‹Ήμ‹  슀슀둜 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


zram의 경우 μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œ 전에 λͺ¨λ“  μž‘μ—…μ„ μˆ˜ν–‰ν•΄μ•Όν•©λ‹ˆλ‹€.

  1. μƒˆ μŠ€μ™‘ 파일 μΆ”κ°€
  2. 포맷 및 μŠ€μ™‘ 온
  3. swapfile의 데이터에 μ•‘μ„ΈμŠ€ν•˜κΈ°μœ„ν•œ λͺ¨λ“  정보λ₯Ό 컀널 cmdline에 μΆ”κ°€ν•©λ‹ˆλ‹€ (grub config, systemd-boot, lilo, u-boot λ“± λ³€κ²½?)
  4. μŠ€μ™‘ 아웃 zram
  5. μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œ (μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œλ₯Ό κ°€λŠ₯ν•˜κ²Œν•˜κΈ° μœ„ν•΄ λͺ¨λ“  일이 λ°œμƒν•˜κΈ° 전에 μ–Όλ§ˆλ‚˜ λ§Žμ€ μ‹œκ°„μ„ μžƒμ—ˆλŠ”μ§€ λͺ¨λ₯΄κ² λ‹€ κ³  μƒκ°ν•©λ‹ˆλ‹€)
  6. μž¬λΆ€νŒ… / μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œ μ’…λ£Œ ν›„ λͺ¨λ“  μž‘μ—…μ„ μ—­μˆœμœΌλ‘œ μˆ˜ν–‰ν•΄μ•Όν•©λ‹ˆλ‹€.

그리고 그것은 κ·ΈλŸ¬ν•œ μ’…λ₯˜μ˜ μŠ€μ™‘ νŒŒμΌμ„ μ§€μ›ν•˜λŠ” fsμ—μ„œλ§Œ μž‘λ™ν•©λ‹ˆλ‹€. 즉, λΆˆκ°€λŠ₯ν•œ btrfs의 κ²½μš°μž…λ‹ˆλ‹€.

@ Nefelim4ag , μ•Œλ € μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. μ „μ²΄μ μœΌλ‘œ λ„ˆλ¬΄ λ§Žμ€ λ…Έλ ₯을

systemd-swap이 μ‹œμž‘λ  λ•Œ μ‹œμŠ€ν…œμ΄ μ‚¬μš© κ°€λŠ₯ν•œ λͺ¨λ“  λ©”λͺ¨λ¦¬λ₯Ό μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œλ‘œ μ „ν™˜ ν•  수 μžˆλ„λ‘ μΆ©λΆ„ν•œ μŠ€μ™‘ νŒŒμΌμ„ 포맷 및 μŠ€μ™‘ν•˜λŠ” μ˜΅μ…˜μ΄ μžˆλ‹€λ©΄ μ–΄λ–»κ²Œλ©λ‹ˆκΉŒ? 그리고 bootctl ν˜ΈμΆœμ„ μˆ˜ν–‰ν•˜κ±°λ‚˜ μ–΄λ–€ μ’…λ₯˜μ˜ κ³ μ • 된 μœ„μΉ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄ systemctl-boot λ˜λŠ” rEFInd λ˜λŠ” grub λ“±μ˜ 컀널 cmdline에 λŒ€ν•œ 정보λ₯Ό μŠ€μ™‘ 파일의 데이터에 μ•‘μ„ΈμŠ€ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

그런 μ‹μœΌλ‘œ, μœ μΌν•œ μ‹€μ œ 지연은 zram μ‚¬μš©μ˜ λΆˆκ°€ν”Όν•œ λΆ€λΆ„ 인 zram을 κ΅μ²΄ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

λ‚΄κ°€ μƒκ°ν•œ κ²ƒμ²˜λŸΌ μ‹œμž‘μ‹œ μŠ€μ™‘μ„ 이미 미리 ν• λ‹Ήν•˜λ €λŠ” 경우 유용 ν• λ§ŒνΌ μΆ©λΆ„νžˆ ν• λ‹Ή ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš”. μ„€μΉ˜μ‹œ μŠ€μ™‘ νŒŒν‹°μ…˜μ„ μ •μ˜ν•˜κ³ μ΄λ₯Ό μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œμ— μ‚¬μš©ν•˜λŠ” μ‹œλ‚˜λ¦¬μ˜€ (컀널이 μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œμ—λ§Œ μ‚¬μš©ν•˜λ„λ‘ μ§€μ •ν•˜λŠ” 방법을 μ•Œμ§€ λͺ»ν•¨) 및 λ‚˜λ¨Έμ§€ μŠ€μ™‘ μž‘μ—…μ— zram을 μ‚¬μš©ν•˜λŠ” μ‹œλ‚˜λ¦¬μ˜€ (및 이득 κ³΅μ—°μ—μ„œ). κ³ λ €ν•΄μ•Ό ν•  μ‚¬ν•­μž…λ‹ˆκΉŒ? μ΄κ²¬μžˆλŠ” μ‚¬λžŒ?

νŽΈμ§‘ : https://gist.github.com/klingtnet/c972b8182e4e2818d6d551b0cbeac44b
+ systemd-swap (zram)

μ‹œμŠ€ν…œμ μΈ μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œμ— λŒ€ν•œ μš°μ„  μˆœμœ„ + 후크λ₯Ό 톡해이λ₯Ό 달성 ν•  수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. λ‹€μ–‘ν•œ stackoverflow μ§ˆλ¬Έμ„ λΉ λ₯΄κ²Œ 샅샅이 뒀져도 이에 λŒ€ν•œ 닡이 μ—†μ—ˆμœΌλ―€λ‘œ μˆ˜λ™μœΌλ‘œ ν…ŒμŠ€νŠΈν•΄μ•Όν–ˆμŠ΅λ‹ˆλ‹€. 이것은 μ‹€μ œλ‘œ λ‚΄κ°€ μƒκ°ν–ˆλ˜ 것보닀 훨씬 μ‰¬μš΄ μˆ˜μ •μ΄λ―€λ‘œ 5.0 이전에 κ΅¬ν˜„ 될 수 μžˆμŠ΅λ‹ˆλ‹€ (전체 μˆ˜μ •μ€ 5.0에 μžˆμ–΄μ•Ό 함).

IIRC, μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œμ—λŠ” 단일 μŠ€μ™‘ μž₯μΉ˜κ°€ ν•„μš”ν•˜λ―€λ‘œ ν• λ‹Ή 된 λͺ¨λ“  λ©”λͺ¨λ¦¬λ₯Ό RAM / μŠ€μ™‘μ— λ‹€λ₯Έ 곳에 μ €μž₯ν•  μˆ˜μžˆμ„λ§ŒνΌ μΆ©λΆ„νžˆ μ»€μ•Όν•©λ‹ˆκΉŒ? (κ·ΈλŸ¬λ‚˜ κΈ°λ‘λ˜λŠ”μ΄ μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œ μ΄λ―Έμ§€λŠ” 기본적으둜 μ•½ 40 %의 λͺ©ν‘œλ‘œ 압좕을 μ‚¬μš©ν•΄μ•Όν•©λ‹ˆλ‹€).

직접 μ‹œλ„ν•œ 적이 μ—†μŠ΅λ‹ˆλ‹€. μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œλŠ” λ‹€λ₯Έ μ†Œν”„νŠΈμ›¨μ–΄μ²˜λŸΌ ν• λ‹Ή 된 κ²ƒμ²˜λŸΌ λ””μŠ€ν¬ λ˜λŠ” RAM의 zram μž₯μΉ˜μ— μŠ€μ™‘ νŒŒμΌμ„ μœ μ§€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆκΉŒ? λ©”λͺ¨λ¦¬κ°€ μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œ 이미지에 κΈ°λ‘λ˜λŠ” ν•œ μ‹œμŠ€ν…œ μƒνƒœλ₯Ό λ‹€μ‹œ μ‹œμž‘ν•˜λŠ” μ€‘μž…λ‹ˆλ‹€. μƒˆλ‘œ λΆ€νŒ…ν•˜λŠ” κ²ƒμ²˜λŸΌ μ΄ˆκΈ°ν™”ν•˜λŠ” λŒ€μ‹  이전에 ν• λ‹Ή 된 μŠ€μ™‘ μž₯치λ₯Ό 볡원 / μž¬κ°œν•΄μ•Όν•©λ‹ˆκΉŒ? λ”°λΌμ„œ μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œ μŠ€μ™‘ μž₯치λ₯Ό ν† κΈ€ν•˜λŠ” 것 외에 μŠ€μ™‘ 끄기 / μΌœκΈ°κ°€ ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆκΉŒ?

단일 μŠ€μ™‘ μž₯치 (zswap λ˜λŠ” zram μ—†μŒ)둜만 μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œλ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. 이 경우 (두 개 μ΄μƒμ˜ μŠ€μ™‘ μž₯μΉ˜κ°€μžˆλŠ” κ²ƒμ²˜λŸΌ) λ””μŠ€ν¬ μŠ€μ™‘μ— μ–΄λ–€ 일이 λ°œμƒν•˜λŠ”μ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€ (μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œ 이미지에 λ§žμ•„μ•Όν•˜λŠ” 경우 쀑볡 된 것 κ°™μŠ΅λ‹ˆκΉŒ?). λ§ˆμ°¬κ°€μ§€λ‘œ zram에 ν• λ‹Ή 된 λ©”λͺ¨λ¦¬κ°€ μžˆλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€. μ†Œν”„νŠΈμ›¨μ–΄μ— μ˜ν•΄ ν• λ‹Ή 된 λ‹€λ₯Έ λ©”λͺ¨λ¦¬μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œ 이미지에 κΈ°λ‘λ˜μ§€λ§Œ μŠ€μ™‘ 뢀뢄이 μ–΄λ–»κ²Œ μ²˜λ¦¬λ˜λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μΆ”κ°€ μŠ€μ™‘ μž₯치λ₯Ό μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œ 이미지에 κΈ°λ‘ν•΄μ•Όν•˜λŠ” κ²½μš°μ—λŠ” zramκ³Ό RAM의 zswap μΊμ‹œκ°€ μ••μΆ• ν•΄μ œλ˜κ³  이λ ₯μ„œλ₯Ό λ‹€μ‹œ μ••μΆ•ν•΄μ•Όν•©λ‹ˆλ‹€.

무슨 일이 μΌμ–΄λ‚˜λŠ”μ§€ μ•ŒκΈ° μœ„ν•΄ atm μ‹œλ‚˜λ¦¬μ˜€λ₯Ό ν…ŒμŠ€νŠΈ ν•  수 μ—†μŠ΅λ‹ˆλ‹€. VM을 톡해 ν…ŒμŠ€νŠΈν•˜κΈ°κ°€ 그리 어렡지 μ•Šμ„κΉŒμš”?


μ£Όλͺ©ν•  κ°€μΉ˜κ°€μžˆλŠ” 것은, systemdλ₯Ό μ‚¬μš©ν•˜λŠ” λŒ€λΆ€λΆ„μ˜ λ°°ν¬νŒμ€ μš”μ¦˜μ—λŠ” μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œλ₯Ό systemd-sleep hibernate μ—°κΈ°ν•΄μ•Όν•©λ‹ˆλ‹€. 2019-2020 이후 (v239 + λ¦΄λ¦¬μŠ€μ—μ„œ?)λŠ” 컀널 맀개 λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ λŒ€μƒ μŠ€μ™‘ μž₯치 (이 κ²½μš°μ—λ§Œ iirc)λ₯Ό μ§€μ •ν•˜μ§€ μ•Šκ³ λ„ μ΅œλŒ€ μ ˆμ „ λͺ¨λ“œμ—μ„œ λ‹€μ‹œ μ‹œμž‘ν•  수 있으며 μ•”μ‹œ 적으둜 μ‚¬μš©ν•  μŠ€μ™‘ μž₯치λ₯Ό μΆ”μΈ‘ν•©λ‹ˆλ‹€. μŠ€μ™‘ νŒŒν‹°μ…˜μ΄ ν•˜λ‚˜λΏμ΄λ©΄ resume (μŠ€μ™‘ νŒŒμΌμ„ μ‚¬μš©ν•˜λŠ” 경우 resume_offset ) 컀널 λΆ€νŠΈ 맀개 λ³€μˆ˜λ₯Ό μ„€μ • / μ—…λ°μ΄νŠΈ ν•  ν•„μš”μ—†μ΄ μ‹ λ’°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μ‹œ λ§ν•˜μ§€λ§Œ, 아직 ν™•μΈν•˜κΈ° μœ„ν•΄ ν…ŒμŠ€νŠΈ ν•œ 것이 μ•„λ‹™λ‹ˆλ‹€.

μ—…μŠ€νŠΈλ¦Ό 좔적 문제 : https://github.com/systemd/systemd/issues/16708

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰