บังคับการโอเวอร์คล็อกตอนกลางคืน


23

เดสก์ทอปของฉันยังคงอยู่ตลอดเวลา มันทำหน้าที่เป็นเซิร์ฟเวอร์และยังทำงานอื่น ๆ ในครัวเรือนกึ่งจำเป็น ในระหว่างวันจะใช้การตั้งค่าซีพียู OnDemand นี่เป็นเพียงแค่ปรับขนาดความถี่ CPU ตามที่ต้องการและใช้งานได้ดีสำหรับฉัน

ในเวลากลางคืนมันบินไปรอบ ๆ แน่นอนว่าส่วนใหญ่เวลาที่มันเดินเบา ๆ โดยใช้พลังงานต่ำ แต่บางครั้งมันจะเพิ่มขึ้นเพื่อทำอะไรบางอย่าง ฉันอยากให้มันอยู่ใน PowerSave และงานต่าง ๆ ถูกบังคับให้ใช้เวลานานกว่าจะเสร็จสมบูรณ์

นอกจากนี้ฉันมีการ์ด Nvidia (GTX 580) ซึ่งสามารถกินไฟได้เท่ากับปริมาณที่หมู่บ้านชาวแอฟริกันเล็ก ๆ ใช้ในหนึ่งปีเมื่อต้องการ (จ้องมองที่ Minecraft) ด้วยเหตุผลที่ไม่ทราบสาเหตุ (เกิดอะไรขึ้นบนเดสก์ท็อปอย่างไม่ต้องสงสัย) แฟน ๆ ดูราวกับว่ากำลังชาร์จเลเซอร์เพื่อยิงเลเซอร์ออกสู่อวกาศ ในเวลากลางคืนฉันต้องการโอเวอร์คล็อกการ์ดเท่าที่จะไปได้

ฉันได้พิจารณาสคริปต์ cron แบบรันรูตแบบง่ายๆเพื่อผลักดันสิ่งเหล่านี้ แต่ชั่วโมงการทำงานของฉันเปลี่ยนแปลงไป สัปดาห์ที่แล้วฉันมีเวลาทำงานเกือบ 70 ชั่วโมงดังนั้นฉันจึงตื่น แต่เช้าตรู่และยังดึกมากทุกวัน หากระบบได้รับการยกย่องในโหมด super-underclock ฉันจะโมโหมาก มีบางอย่างที่ฉันสามารถทำได้เพื่อพูดว่า "Underclock ถ้า:

  • มันอยู่ระหว่าง 22: 00-09: 00
  • ไม่มีกิจกรรมเมาส์ / คีย์บอร์ดเป็นเวลา 10 นาที
  • ไม่มีการเล่นภาพยนตร์

หากหนึ่งในเงื่อนไขเหล่านั้นไม่เป็นความจริงความต้องการ underclock เพื่อย้อนกลับไปทันที ฉันไม่ต้องการรอ cron-script เพื่อปลุกคอมพิวเตอร์ให้ตื่นจากการนอนหลับ ในทำนองเดียวกันเมื่อสิ่งเหล่านี้กลายเป็นจริงมันควรกลับไปนอน

ตัวเลือกของฉันคืออะไร?


ตอนนี้คุณเป็นเวอร์ชั่นอะไร จนกว่าฉันจะกลับบ้านไปที่เครื่องของฉันฉันจะพูดถึงคุณควรจะสามารถขอเหตุการณ์โดยใช้กิจกรรม acpi หรือแพคเกจเครื่องมือ pm
hometoast

คำตอบ:


19

นี่คือโปรแกรมที่ทำในสิ่งที่คุณต้องการ:

#!/usr/bin/env python
# coding: utf8

import time
import sys
import commands


USER = commands.getoutput("cat /var/log/auth.log | grep " +
    sys.argv[0]).split("sudo:")[1].split()[0].strip()


def is_idle():
    return int(commands.getoutput("xprintidle")) >= 10 * 60 * 1000

def is_night():
    return time.localtime().tm_hour in (22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

def is_stumm():
    return "RUNNING" not in commands.getoutput(("sudo -u %s pacmd " +
        "list-sinks | grep RUNNING") % USER)


def main():
    powersave = False
    while 1:
        if is_idle() and is_night() and is_stumm():
            if not powersave:
                print "going into powersave mode"
                commands.getoutput("echo powersave > " +
                    "/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor")
                powersave = True
        else:
            if powersave:
                print "going into ondemand mode"
                commands.getoutput("echo ondemand > " +
                    "/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor")
                powersave = False
        time.sleep(0.5)

if __name__ == '__main__':
    assert commands.getstatusoutput("xprintidle")[0] == 0, (
        "you need to `sudo apt-get install xprintidle`")
    assert commands.getoutput("whoami") == "root", (
        "you need to be root to run this program")
    main()

บันทึกการตั้งค่าของคุณ:

  • ... >= 10 * 60 * 1000
  • ... tm_hour in (22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9) และ
  • "RUNNING" not in ...

ฉันใช้ pulseaudio เพื่อดูว่าภาพยนตร์กำลังเล่นอยู่หรือไม่ สิ่งนี้ส่งผลกระทบต่อดนตรีด้วย


5

คุณสามารถบังคับให้ปรับขนาด cpu ของคุณโดยใช้:

cpufreq-selector -f [frequency]

มีตัวเลือกเพิ่มเติมเล็กน้อย (เช่น cpu เฉพาะเจาะจงหรือการเลือกการกำกับดูแลมากกว่าความเร็ว) สิ่งนี้จะถือว่าสมมติว่าเมนบอร์ด / cpu ของคุณอนุญาตให้ Ubuntu ควบคุมการปรับขนาดด้วยตนเอง (เห็นได้ชัดว่านี่ไม่ใช่กรณี)

ส่วนที่เหลือสามารถใช้งานได้โดยใช้สคริปต์ แต่คุณต้องการมันมากทีเดียว ^ _ ^ หากคุณต้องการการตอบสนองทันทีที่ฉันคิดว่าคุณต้องมีบางสิ่งบางอย่างในการสำรวจระบบของคุณ จากความรู้บางอย่างที่ จำกัด และไม่มีอะไรที่ประกาศเงื่อนไขที่คุณระบุ

สถานที่ที่จะเริ่มตรวจสอบอย่างไรก็ตามเป็นสกรีนเซฟเวอร์ สิ่งนี้จะเปิดขึ้นหลังจากไม่มีการใช้งานตามกำหนดเวลา (ซึ่งจะเป็นจริงในเวลา 22.00 น. - 21.00 น.) และสามารถถูกยับยั้งโดยผู้เล่นภาพยนตร์ หากคุณสร้างสกรีนเซฟเวอร์ที่ลดขนาดซีพียูเมื่อเริ่มต้นและเรียกคืนเมื่อปลุกคุณจะมีสิ่งที่คุณต้องการ

น่าเสียดายที่ฉันสามารถพาคุณไปได้โดยไม่รู้อะไรเลยเกี่ยวกับสกรีนเซฟเวอร์และวิธีการใช้งาน

โชคดี.


4

คุณอาจจะไม่จริงประหยัดพลังงานมากขึ้นโดยใช้การประหยัดพลังงานราชการ

ขึ้นอยู่กับปริมาณงานของคุณการทำให้รายการงานเสร็จอย่างรวดเร็วโดยการใช้พลังงานเพิ่มขึ้นเล็กน้อยจากนั้นกลับสู่สถานะสลีปลึกแทนที่จะทำงานเป็นเวลานานโดยใช้พลังงานน้อยลงอาจให้ผลลัพธ์ที่ดีขึ้น

ขึ้นอยู่กับแอปพลิเคชันของคุณมันอาจคุ้มค่าที่จะติดตั้งเซิร์ฟเวอร์เฉพาะที่มีความต้องการพลังงานต่ำกว่าและมีแหล่งจ่ายไฟที่มีมิติที่เหมาะสมสำหรับการโหลดนั้นและเพียงแค่ปิดเดสก์ท็อปในเวลากลางคืน


1
บางครั้งคุณแค่ต้องการให้คอมพิวเตอร์ของคุณเงียบโดยเฉพาะตอนกลางคืน ..
Maxime R.

ถ้าคุณต้องการความเงียบการไม่มีระบบให้ทำงานเลยเป็นวิธีที่ดีที่สุด ฉันมีเครื่องที่ดังมากสำหรับงานประจำวันของฉันและเซิร์ฟเวอร์ในตู้ไม้กวาดสำหรับงานพื้นหลังอย่างหลังมีแหล่งจ่ายไฟขนาดเล็ก (=> ความร้อนเหลือทิ้งน้อย), CPU (=> ความร้อนเหลือทิ้งน้อย), กราฟิกการ์ด (คุณได้รับ ความคิด) ... และใช้OnDemandผู้ว่าราชการจังหวัด ฉันไม่มีเสียงรบกวนในห้องนอนตอนกลางคืนและการใช้พลังงานสำหรับเซิร์ฟเวอร์นั้นประมาณหนึ่งในสามของสิ่งที่เดสก์ทอปกินเมื่อไม่ได้ใช้งานดังนั้นฉันจึงยังประหยัดเงินได้
Simon Richter

แน่นอนว่าฉันเห็นด้วย แต่ในกรณีนี้ Oli ใช้เครื่องเดียวกับเซิร์ฟเวอร์และเดสก์ท็อป
Maxime R.

3

powernapเป็นเครื่องมือที่มีประโยชน์สำหรับสิ่งต่าง ๆ เช่นนี้สิ่งที่ดีคือมันดูที่ตารางกระบวนการของคุณเพื่อดูว่าระบบของคุณไม่ว่างไม่ใช่เวลาว่างที่แป้นพิมพ์

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

powernap สามารถกำหนดค่าให้ใช้งานสวิตช์ผู้ว่าการหรือถ้าฮาร์ดแวร์ของคุณรองรับใช้คุณสมบัติ Wake On Lan (WOL) เพื่องีบจริงกลางดึกจนกว่าจะถึงเวลาที่จำเป็น


1

เท่าที่ซีพียูไปคุณสามารถเปลี่ยนผู้ว่าราชการเป็น powersave ด้วยเช่นแอปเพล็ตมอนิเตอร์การปรับความถี่ของ cpu การ์ดแสดงผลเป็นอีกเรื่องหนึ่ง ฉันรู้ว่าการ์ด ATI ของฉันมีปุ่มใน / sys เพื่อปรับประสิทธิภาพระหว่างต่ำปานกลางและสูง แต่เล่นซอกับพวกเขาดูเหมือนจะไม่สร้างความแตกต่างใด ๆ และมักทำให้วิดีโอไม่เสถียร


1

cpufreqd ถูกออกแบบมาสำหรับปัญหาเฉพาะที่คุณมีคุณสามารถสร้างโปรไฟล์ทั้งกลางวันและกลางคืนและตั้งกฎตามโปรแกรมที่กำลังรันอยู่

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