Làm thế nào để Ubuntu xác định không hoạt động trước khi đình chỉ?


14

Tôi đã đặt nó thành "tạm dừng khi không hoạt động" sau 30 phút.

Làm thế nào để xác định xem nó không hoạt động? Có phải chỉ là người dùng nhập thông qua bàn phím / chuột?

Nếu tôi để một chương trình làm việc ở xa - giả sử xử lý một video, mất nhiều thời gian, nó có bị treo sau 30 phút và dừng chương trình đó không? Câu hỏi tương tự cho tải xuống dài, nó sẽ tạm dừng nửa chừng.


Có một tìm kiếm cho wake up calls.
Rinzwind

Trong Askubfox? Tôi vừa thử nó và tất cả các câu trả lời dường như liên quan đến việc đánh thức hệ thống khỏi bị đình chỉ hoặc tương tự.
Jazz

Câu trả lời:


19

Câu hỏi hay. Hãy cùng tìm hiểu!

  1. Bắt đầu bằng cách điều tra tùy chọn "Tạm dừng khi không hoạt động",

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

    chúng ta có thể biết rằng nó đặt khóa GSinstall được gọi là 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");

    Các tài liệu cho khóa này cung cấp một mô tả ngắn gọn:

    Lượng thời gian tính bằng giây mà máy tính bật nguồn AC cần không hoạt động trước khi đi ngủ. Giá trị 0 có nghĩa là không bao giờ.

    nhưng vẫn không giải thích "không hoạt động" nghĩa là gì.

  2. Tìm kiếm cho sleep-inactive-ac-timeoutdẫn chúng ta đến GNOME Cài đặt Daemon ,

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

    định kỳ kiểm tra một thuộc tính của Phiên Gnome được gọi là Presence.status:

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

    Nếu nó thấy rằng trạng thái không hoạt động , nó sẽ đặt hệ thống ngủ :

    idle_set_mode (..., GSD_POWER_IDLE_MODE_SLEEP);

    Vì vậy, chúng ta cần tìm hiểu cách Phiên Gnome quyết định xem hệ thống có "nhàn rỗi" hay không.

  3. Theo dõi ngược từ nơi Phiên Gnome cập nhật giá trị của Presence.status,

    gsm_presence_set_status (presence, GSM_PRESENCE_STATUS_IDLE, ...);

    chúng ta có thể thấy rằng nó sử dụng bộ IDLETIMEđếm từ Xorg:

    if (... && strcmp (counters[i].name, "IDLETIME") == 0) {
        ...->counter = counters[i].counter;
  4. Các IDLETIMEhành vi của truy cập được tóm tắt trong một bài viết trên blog của tác giả của GNOME Power Manager:

    gnome-power-manager sử dụng bộ đếm bên trong Xorg gọi là IDLETIME. Bộ đếm này chỉ được tăng lên khi người dùng không di chuyển chuột hoặc nhấp vào một số phím. Khi người dùng nhấp vào cái gì đó, IDLECOUNTER được đặt lại.

Điều này cho chúng ta biết rằng Ubuntu xác định không hoạt động bằng cách đo lượng thời gian đã trôi qua kể từ lần nhấn phím hoặc chuyển động chuột cuối cùng. Việc sử dụng CPU và hoạt động mạng không ảnh hưởng đến.


Như bạn đã nói ở dòng cuối cùng tại sao Việc sử dụng CPU không đáng kể? Sự nghi ngờ của tôi là tôi đến từ Askubfox.com/questions/215870/ . bởi vì nếu tôi đặt tải xuống tệp 1GB thì có thể mất rất nhiều thời gian. ngay cả khi tôi đang sử dụng PC của tôi vẫn đang tải xuống tập tin đó ngay. Điều đó có nghĩa là PC của tôi hoạt động phải không? : D
rɑːdʒɑ

+1 để điều tra và phân tích xuất sắc. Và @AgentCool, không. Hoạt động được xác định bằng cách nhấn bàn phím hoặc chuột. Tải xuống của bạn sẽ không nhấn bất kỳ phím nào và giữ cho PC luôn hoạt động.
Oxwivi

@Oxwivi đó là bình luận gần một năm trước. không phải sau khi chỉnh sửa. :)
rɑːdʒɑ

@AgentCool Xấu quá, tôi không để ý. Bài đăng gần đây đã bị lỗi, có thể là do chỉnh sửa của ngày hôm qua. Là một câu hỏi tôi quan tâm, vì vậy đã kiểm tra nó.
Oxwivi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.