프로세스가 중단 없는(차단된) 절전 모드(상태 D)에서 소비하는 시간을 최소화합니다.

프로세스가 중단 없는(차단된) 절전 모드(상태 D)에서 소비하는 시간을 최소화합니다.

나는 방해받지 않는 수면이 무엇인지, 왜 또는 어떻게 이루어지는지에 대한 많은 게시물을 온라인에서 봅니다.프로세스가 왜 잠들었다가 깨어나는지 어떻게 알 수 있나요?, 하지만 그곳에서 보내는 시간을 최소화하는 방법을 묻는 게시물을 찾지 못했습니다. (제공된 내용을 읽어서 기쁩니다)

내 프로세스는 메모리 집약적이며(~80GB 스왑) 디스크 R/W 속도는 일반적으로 "D" 상태에서 약 25-75M/s인 것으로 나타났습니다. 분명히 모든 작업을 캐시에 넣을 수는 없지만 "D"에서 소요되는 시간을 최소화할 수 있는 방법이 있습니까? 교환성을 10으로 설정했지만 0으로 설정하면 환경이 응답하지 않게 될 수도 있습니다. 캐시 압력은 어떻습니까? /etc/sysctl.conf이를 달성하려면 어떤 조정이 필요합니까 ?

Nvidia 드라이버의 검은색 화면이 아니었다면 Cinnamon을 종료하고 tty에서 실행했을 수도 있지만 효과가 약해질 수 있도록 어딘가에 약간의 조정을 가하고 싶습니다.

그리고 inxi -F말했다;

X@X / $ inxi -F
System:    Host: sbh Kernel: 4.13.0-21-generic x86_64 (64 bit) Desktop: Cinnamon 3.6.7
           Distro: Linux Mint 18.3 Sylvia
Machine:   System: Apple (portable) product: MacBookPro11 3 v: 1.0
           Mobo: Apple model: Mac-2BD1B31983FE v: MacBookPro11 3
           Bios: Apple v: MBP112.88Z.0142.B00.1708080655 date: 08/08/2017
CPU:       Quad core Intel Core i7-4980HQ (-HT-MCP-) cache: 6144 KB 
           clock speeds: max: 4000 MHz 1: 2793 MHz 2: 2793 MHz 3: 2793 MHz 4: 2793 MHz 5: 2793 MHz 6: 2793 MHz
           7: 2793 MHz 8: 2793 MHz
Graphics:  Card: NVIDIA GK107M [GeForce GT 750M Mac Edition]
           Display Server: X.Org 1.18.4 drivers: nvidia (unloaded: fbdev,vesa,nouveau)
           Resolution: [email protected]
           GLX Renderer: GeForce GT 750M/PCIe/SSE2 GLX Version: 4.5.0 NVIDIA 384.111
Audio:     Card-1 Intel 8 Series/C220 Series High Definition Audio Controller driver: snd_hda_intel
           Card-2 NVIDIA GK107 HDMI Audio Controller driver: snd_hda_intel
           Sound: Advanced Linux Sound Architecture v: k4.13.0-21-generic
Network:   Card: Broadcom BCM4360 802.11ac Wireless Network Adapter driver: wl
           IF: wlp3s0 state: up mac:
Drives:    HDD Total Size: 1000.6GB (17.0% used) ID-1: /dev/sda model: APPLE_SSD_SM1024 size: 1000.6GB
Partition: ID-1: / size: 202G used: 134G (70%) fs: ext4 dev: /dev/sda6
           ID-2: swap-1 size: 26.21GB used: 26.21GB (100%) fs: swap dev: /dev/sda7
RAID:      No RAID devices: /proc/mdstat, md_mod kernel module present
Sensors:   System Temperatures: cpu: 72.0C mobo: N/A gpu: 70C
           Fan Speeds (in rpm): cpu: N/A
Info:      Processes: 260 Uptime: 16:02 Memory: 15505.8/15952.4MB Client: Shell (bash) inxi: 2.2.35 

나는 /etc/sysctl.conf지금

vm.swappiness=10
vm.vfs_cache_pressure=50
vm.min_free_kbytes=262144
#vm.max_map_count=262144
vm.max_map_count=524288

답변1

귀하의 질문에 대한 쉬운 대답은 없을 것 같습니다. 아시다시피 논스톱 대기는 커널이 프로세스를 대신하여 일부 작업을 수행하고 해당 작업이 진행되는 동안 중단되는 것을 지원하지 않음을 의미합니다. 이 상태에서 보내는 시간을 어떻게 최소화할 수 있나요? 이 상태로 전환한 호출 경로를 찾아야 합니다. 비슷한 방법을 사용하여 ftrace이를 확인할 수도 있습니다 .

프로세스가 중단 없는 절전 모드로 전환되도록 촉발한 호출이 무엇인지 알고 나면 해당 호출이 수행하는 작업과 프로세스가 커널에 요청하는 작업과 어떻게 관련되는지 파악해야 합니다. 이를 기반으로 커널에 요청하는 작업을 조정하여 해당 시간을 최소화할 수 있습니다.

관련 정보