プロセスが中断のない(ブロックされた)省電力モード(状態D)で費やす時間を最小限に抑えます。

プロセスが中断のない(ブロックされた)省電力モード(状態D)で費やす時間を最小限に抑えます。

私は、邪魔されない睡眠が何であるか、なぜまたはどのように行われているかについての多くの記事をオンラインで見る。プロセスがなぜ眠りに落ちて起きているのか、どうすればわかりますか?しかし、そこで過ごす時間を最小限に抑える方法を尋ねる投稿が見つかりませんでした。 (提供された内容を読んで嬉しいです)

私のプロセスはメモリ集約的であり(〜80 GBスワップ)、ディスクのR / W速度は通常「D」状態で約25〜75 M / 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これを確認することもできます。

プロセスが中断のないスリープモードに切り替わるように促した呼び出しが何であるかを知ったら、その呼び出しが実行する操作と、プロセスがカーネルに要求する操作とどのように関連しているかを把握する必要があります。これに基づいて、カーネルに要求するアクションを調整して、その時間を最小限に抑えることができます。

関連情報