Ubuntu จะตัดสินว่าไม่มีการใช้งานก่อนที่จะระงับได้อย่างไร


14

ฉันได้ตั้งค่าเป็น "ระงับเมื่อไม่ใช้งาน" หลังจาก 30 นาที

มันตรวจสอบอย่างไรว่ามันไม่ได้ใช้งาน? มันเป็นเพียงการป้อนข้อมูลของผู้ใช้ผ่านแป้นพิมพ์ / เมาส์?

ถ้าฉันออกจากโปรแกรมที่ทำงานไป - พูดว่าการประมวลผลวิดีโอซึ่งใช้เวลานานมันจะหยุดทำงานหลังจากผ่านไป 30 นาทีแล้วหยุดโปรแกรมนั้นหรือไม่? คำถามเดียวกันสำหรับการดาวน์โหลดที่ยาวนานมันจะระงับไปครึ่งทางหรือไม่


wake up callsมีการค้นหาสำหรับ
Rinzwind

ใน Askubuntu ฉันเพิ่งลองและคำตอบทั้งหมดดูเหมือนจะเกี่ยวข้องกับการปลุกระบบจากการหยุดชั่วคราวหรือคล้ายกัน
แจ๊ส

คำตอบ:


19

คำถามที่ดี. มาหาคำตอบกัน!

  1. เริ่มต้นด้วยการตรวจสอบตัวเลือก "ระงับเมื่อไม่ใช้งานสำหรับ"

    <property ...>Suspend when inactive for</property> ...
    <object ... id="combobox_sleep_ac">

    เราสามารถเรียนรู้ว่ามันตั้งค่าคีย์ GSettings ที่เรียกว่าsleep-inactive-ac-timeout:

    widget = GTK_WIDGET (gtk_builder_get_object (..., "combobox_sleep_ac")); ...
    g_object_set_data (G_OBJECT(widget), "_gsettings_key", "sleep-inactive-ac-timeout");

    เอกสารสำหรับคีย์นี้ยังมีคำอธิบายสั้น ๆ :

    จำนวนเวลาเป็นวินาทีที่คอมพิวเตอร์ที่ใช้ไฟ AC จะต้องไม่ทำงานก่อนที่จะเข้าสู่โหมดสลีป ค่า 0 หมายถึงไม่เคย

    แต่ก็ยังไม่ได้อธิบายว่า "ไม่ใช้งาน" หมายถึงอะไร

  2. ค้นหาสำหรับsleep-inactive-ac-timeoutนำเราไปสู่GNOME ตั้งค่าภูต ,

    timeout_sleep = g_settings_get_int (..., "sleep-inactive-ac-timeout");

    ซึ่งจะตรวจสอบคุณสมบัติของเซสชั่น GNOME เป็นระยะ ๆ ที่เรียกว่าPresence.status:

    result = g_dbus_proxy_get_cached_property (...->session_presence_proxy, "status");

    หากพบว่าสถานะไม่ได้ใช้งานจะทำให้ระบบเข้าสู่โหมดสลีป :

    idle_set_mode (..., GSD_POWER_IDLE_MODE_SLEEP);

    ดังนั้นเราต้องเรียนรู้ว่า GNOME Session ตัดสินใจอย่างไรว่าระบบนั้น "ว่าง"

  3. ต่อไปนี้ย้อนกลับจากที่ GNOME เซสชันการปรับปรุงค่าของPresence.status,

    gsm_presence_set_status (presence, GSM_PRESENCE_STATUS_IDLE, ...);

    เราจะเห็นว่ามันใช้ตัวIDLETIMEนับจาก Xorg:

    if (... && strcmp (counters[i].name, "IDLETIME") == 0) {
        ...->counter = counters[i].counter;
  4. IDLETIMEพฤติกรรมเคาน์เตอร์สรุปในบล็อกโพสต์โดยผู้เขียนของการจัดการการใช้พลังงานของ GNOME:

    gnome-power-manager ใช้ตัวนับภายใน Xorg ที่เรียกว่า IDLETIME ตัวนับนี้จะเพิ่มขึ้นก็ต่อเมื่อผู้ใช้ไม่ได้เลื่อนเมาส์หรือคลิกที่ปุ่มบางปุ่ม เมื่อผู้ใช้คลิกบางสิ่ง IDLECOUNTER จะถูกรีเซ็ต

สิ่งนี้บอกเราว่า Ubuntu กำหนดความไม่เคลื่อนไหวโดยการวัดระยะเวลาที่ผ่านไปตั้งแต่การกดแป้นครั้งสุดท้ายหรือการเคลื่อนไหวของเมาส์ การใช้ CPU และกิจกรรมเครือข่ายไม่ได้คำนึงถึง


อย่างที่คุณพูดในบรรทัดสุดท้ายทำไมการใช้งาน CPU ไม่มาก? ข้อสงสัยของฉันคือฉันมาจากaskubuntu.com/questions/215870/... เพราะถ้าฉันใส่ดาวน์โหลดไฟล์ 1GB แล้วมันอาจใช้เวลานาน แม้ฉันจะรู้สึกว่าเครื่องพีซีของฉันยังคงทำการดาวน์โหลดไฟล์นั้นอยู่ นั่นหมายความว่าพีซีของฉันทำงานใช่มั้ย : D
rɑːdʒɑ

+1 สำหรับการตรวจสอบและพังทลายที่ยอดเยี่ยม และ @AgentCool ไม่ กิจกรรมจะถูกกำหนดโดยการกดคีย์บอร์ดหรือเมาส์ การดาวน์โหลดของคุณจะไม่กดปุ่มใด ๆ และทำให้พีซีตื่นตัว
Oxwivi

@Oxwivi นั่นแสดงความคิดเห็นเกือบปีที่ผ่านมา ไม่ใช่หลังจากการแก้ไข :)
rɑːdʒɑ

@AgentCool ฉันไม่ดีฉันไม่ได้สังเกต โพสต์ถูกชนเมื่อเร็ว ๆ นี้น่าจะเกิดจากการแก้ไขเมื่อวานนี้ เป็นคำถามที่ฉันสนใจดังนั้นลองตรวจสอบดู
Oxwivi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.