คำถามติดแท็ก scheduling

เทคนิคสำหรับการจัดตารางงานที่จะทำงานในเวลาที่กำหนดหรือในเหตุการณ์เฉพาะ

3
ฉันจะดูรายการงาน cron ทั้งหมดที่กำหนดไว้ในเครื่องของฉันได้อย่างไร
ดูแลระบบของฉันตั้งค่างาน cron จำนวนมากบนเครื่องของฉัน ฉันต้องการที่จะรู้ว่าสิ่งที่กำหนดไว้สำหรับเวลาอะไร ฉันจะรับรายการนั้นได้อย่างไร
201 linux  cron  scheduling 



1
การใช้งาน CPU สูงด้วย CFS?
ฉันถามคำถามก่อนหน้านี้เพื่อลองและแยกแหล่งที่มาของการเพิ่มขึ้นของการใช้งาน CPU เมื่อย้ายแอปพลิเคชันจาก RHEL 5 ไปยัง RHEL 6 การวิเคราะห์ที่ฉันทำเพื่อดูเหมือนจะบ่งชี้ว่าเกิดจาก CFS ในเคอร์เนล ผมเขียนแอพลิเคชันทดสอบและพยายามตรวจสอบว่านี้คือกรณี (การประยุกต์ใช้การทดสอบเดิมลบออกให้พอดีกับขนาด จำกัด แต่ยังคงมีอยู่ในrepo คอมไพล์ ฉันรวบรวมมันด้วยคำสั่งต่อไปนี้ใน RHEL 5: cc test_select_work.c -O2 -DSLEEP_TYPE=0 -Wall -Wextra -lm -lpthread -o test_select_work จากนั้นฉันก็เล่นกับพารามิเตอร์จนกระทั่งเวลาดำเนินการต่อการทำซ้ำประมาณ 1 ms ใน Dell Precision m6500 ฉันได้ผลลัพธ์ต่อไปนี้ใน RHEL 5: ./test_select_work 1000 10000 300 4 time_per_iteration: min: 911.5 us avg: 913.7 …

1
การจัดตารางเวลากระบวนการแบบเรียลไทม์ใน Linux
ฉันได้เรียนรู้แนวคิดการตั้งเวลา ปัจจุบันความเข้าใจของฉันอยู่ในขณะนี้ดังต่อไปนี้ มีกระบวนการแบบเรียลไทม์และกระบวนการแบบเรียลไทม์ กระบวนการเวลาจริงไม่แสวงหาสามารถมีniceค่าลำดับความสำคัญของพวกเขาในช่วงของ-20ไป20 ค่าบวกที่สูงกว่าแสดงว่ากระบวนการมีลำดับความสำคัญต่ำกว่า กระบวนการเวลาจริงจะมีค่าความดีระบุว่าเป็น-ตามที่อธิบายไว้ในคำตอบนี้ที่นี่ นี่เป็นส่วนใหญ่เนื่องจากกระบวนการเรียลไทม์มีลำดับความสำคัญสูงกว่ากระบวนการที่ไม่ใช่เรียลไทม์และค่าความดีจะไม่นำมาใช้กับพวกเขา ตอนนี้ฉันสามารถใช้chrtเพื่อดูคุณสมบัติเรียลไทม์ของกระบวนการ สำหรับกระบวนการเรียลไทม์การchrtส่งออกให้เป็น chrt -p 5 pid 5's current scheduling policy: SCHED_FIFO pid 5's current scheduling priority: 99 อย่างที่เราเห็นสำหรับโพรเซส5ลำดับความสำคัญคือ 99 ซึ่งสูงที่สุด นอกจากนี้นโยบายการตั้งเวลาคือSCHED_FIFO ตอนนี้สำหรับกระบวนการที่ไม่ใช่แบบเรียลไทม์chrtจะให้เอาต์พุตเป็น chrt -p 22383 pid 22383's current scheduling policy: SCHED_OTHER pid 22383's current scheduling priority: 0 ในฐานะที่เราสามารถดูกระบวนการ22383ลำดับความสำคัญคือ 0 SCHED_OTHERและนโยบายการจัดตารางเวลาคือ คำถาม เป็นไปได้หรือไม่ที่ฉันจะทำให้กระบวนการใด ๆ …

2
เหตุใดความดีจึงมีตั้งแต่ -20 ถึง 19
niceคำสั่งช่วยให้คุณสามารถปรับการจัดลำดับความสำคัญการตั้งเวลา ( "ความดี") ของโปรแกรม ในทุกระบบที่เหมือนกับ Unix ที่ฉันใช้ความดีจะถูกระบุด้วยช่วงของจำนวนเต็มโดยที่ -20 เป็นลำดับความสำคัญการจัดตารางเวลาที่ดีที่สุด 0 คือค่าเริ่มต้นและ 19 เป็นค่าที่น้อยที่สุด การมี 0 เป็นความดีเริ่มต้นนั้นง่ายพอ แต่เหตุใดจึงเลือก -20 และ 19 เป็นจุดสิ้นสุดของช่วง ทำไมไม่ -128 และ 127 ซึ่งจะพอดีกับไบต์ 8 บิตที่ลงนามแล้ว? หรือเพราะเหตุใด -100 ถึง 100 ซึ่งเป็นมนุษย์ที่ใช้ทศนิยมได้ง่ายกว่าหรือใกล้เคียงกับการยศาสตร์ -99 ถึง 99 เล็กน้อย มีการเลือกช่วง -20 ถึง 19 โดยพลการหรือไม่หรือมีความสัมพันธ์กับ internals ของตัวกำหนดตารางเวลาที่niceเชื่อมโยงกับตอนแรกหรือไม่ (ฉันเข้าใจว่าวันนี้ไม่มีความสัมพันธ์อย่างน้อยสำหรับ Linux ซึ่งตัวกำหนดตารางเวลาใช้ลำดับความสำคัญในช่วง 0 ถึง 139 …

1
การทำงานเป็นอย่างไร
sched_setschedulerพูดว่า: การกำหนดตารางเวลาทั้งหมดถูกจองไว้ล่วงหน้า: หากกระบวนการที่มีลำดับความสำคัญคงที่สูงกว่าพร้อมที่จะเรียกใช้กระบวนการที่กำลังทำงานอยู่ในปัจจุบันจะถูกจองล่วงหน้าและกลับสู่รายการรอสำหรับระดับความสำคัญคงที่ ในขณะที่setpriorityพูดว่า สิ่งนี้ทำให้ค่า nice ที่ต่ำมาก (+19) เพื่อให้ CPU เล็ก ๆ น้อย ๆ กับกระบวนการอย่างแท้จริงเมื่อใดก็ตามที่มีการโหลดลำดับความสำคัญสูงกว่าอื่น ๆ บนระบบและทำให้ค่า nice ที่สูง (-20) ส่งมอบ CPU ส่วนใหญ่ให้กับแอปพลิเคชันที่ต้องการ ดังนั้นการเปลี่ยนแปลงค่าที่ดีจะมีผลต่อการดำเนินการของโปรแกรมอย่างไร มันคล้ายกับการจัดตารางเวลา RT (ที่โปรแกรมที่มีค่า nice ที่ดีกว่ากำลังจะไปขัดจังหวะโปรแกรมที่มีค่า nice ต่ำกว่า) หรือไม่ ข้อมูลทั้งหมดบนอินเทอร์เน็ตเป็นวิธีการใช้niceและวิธีการเปลี่ยนลำดับความสำคัญของกระบวนการ ไม่มีลิงก์อธิบายว่ากระบวนการที่มีลำดับความสำคัญต่างกันอย่างไร ฉันไม่สามารถหารหัสต้นฉบับได้

1
`at` รันคำสั่งในภายหลังหรือไม่หากคอมพิวเตอร์ปิดในเวลาที่กำหนด
ฉันต้องการกำหนดเวลางานด้วยatแต่ฉันไม่แน่ใจว่าจะเกิดอะไรขึ้นหากคอมพิวเตอร์ถูกระงับในเวลาที่กำหนด: คำสั่งจะถูกดำเนินการทันทีที่คอมพิวเตอร์ตื่นขึ้นมาอีกครั้ง (เช่นเดียวกับanacron) หรือจะไม่ถูกดำเนินการเลย (เช่นเดียวกับcron) หากคุณระบุงานที่จะเรียกใช้ในเวลาและวันที่ที่ระบุอย่างแน่นอนในอดีตงานจะทำงานโดยเร็วที่สุด นั่นคือสิ่งที่ manpage พูดเกี่ยวกับเรื่องนี้ แต่มันไม่ตรงกับกรณีของฉัน: ฉันไม่ต้องการระบุงานที่จะทำงานในอดีตฉันต้องการเรียกใช้งานในอนาคตและถามว่าatจะจัดการอย่างไรถ้าคอมพิวเตอร์ กำลังนอนหลับอยู่ นี่ไม่ใช่คำสั่ง Run at ที่ซ้ำกันเมื่อคอมพิวเตอร์หลับเพราะคำถามนี้ถามว่าatจะปลุกคอมพิวเตอร์ให้เรียกใช้งานคำสั่งหรือไม่และเป็นวิธีการป้องกัน atd ไม่ให้ทำงานในอดีตหรือไม่ เพราะนี่เป็นเรื่องเกี่ยวกับวิธีการป้องกันไม่ให้เรียกatใช้งาน "เก่า" เหล่านั้น (โดยมีคำตอบที่ดีมาก!)
20 scheduling  at 

2
รันสคริปต์ทุก ๆ 30 นาทีด้วย systemd
ฉันต้องการรันสคริปต์ทุก ๆ 30 นาทีหลังจากบูตเข้าสู่ระบบ ฉันรู้ว่าคุณสามารถใช้ cron ได้ แต่ฉันไม่ได้วางแผนที่จะใช้คุณสมบัตินี้บ่อยครั้งดังนั้นฉันจึงอยากลองใช้กับ systemd จนถึงตอนนี้ฉันเพิ่งพบตัวจับเวลาแบบโมโนโทนิกซึ่งช่วยให้สามารถเรียกใช้บางสิ่งได้ครั้งเดียว (อย่างน้อยฉันก็คิดอย่างนั้น) จะเป็นอย่างไรfoo.timerและfoo@user.serviceดูเหมือนว่าในกรณีที่ฉันต้องการที่จะดำเนินการบางอย่างทุก 30 นาทีจากการบูต / ระบบเริ่มต้น? foo@user.service [Unit] Description=run foo Wants=foo.timer [Service] User=%I Type=simple ExecStart=/bin/bash /home/user/script.sh foo.timer [Unit] Description=run foo [Timer] where I am stuck... ???

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


2
วิธีการเปิดใช้งานและใช้ตัวกำหนดตารางเวลาของ BFQ
ฉันเพิ่งติดตั้ง Linux เคอร์เนลเวอร์ชัน 4.12 บน Ubuntu 17.04 โดยใช้ ukuu (ยูทิลิตี้เคอร์เนล Ubuntu Kernel Update https://doc.ubuntu-fr.org/ubuntu_kernel_upgrade_utility ) สิ่งนี้คือเมื่อฉันตรวจสอบ I / O schedulers ที่มีอยู่ฉันไม่สามารถหา BFQ หรือ Kyber I / O scheduler ได้: cat /sys/class/block/sda/queue/scheduler > noop deadline [cfq] ดังนั้นวิธีการใช้หนึ่งใน schedulers ใหม่ในรุ่น Linux นี้?

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

2
วิธีง่ายๆในการจัดกำหนดการเหตุการณ์เดียวที่จะเกิดขึ้นในอนาคต
บ่อยครั้งที่ฉันต้องการให้คอมพิวเตอร์ทำภารกิจเดียว แต่ไม่ใช่ตอนนี้ ตัวอย่างเช่นฉันสามารถแจ้งให้ฉันทราบภายใน 30 นาทีว่าถึงเวลาออกจากงานแล้ว หรือบางทีฉันต้องการให้ทำการทดสอบที่ซับซ้อน 2 ชั่วโมงต่อจากนี้เมื่อฉันแน่ใจว่าคนส่วนใหญ่จะหายไปจากสำนักงาน ฉันรู้ว่าฉันสามารถสร้างงาน cron เพื่อให้ทำงานในเวลาที่กำหนดของวัน แต่ดูเหมือนว่างานจำนวนมากเมื่อทั้งหมดที่ฉันต้องการคือสิ่งที่ง่ายเช่น "รันสคริปต์นี้ใน 10 นาที" นอกจากนี้ฉันจะต้องคิดออก ตอนนี้เวลาเท่าไรจะเป็น X นาที / ชั่วโมง / วันจากนั้นลบงาน cron เมื่อเสร็จแล้ว แน่นอนฉันสามารถเขียนสคริปต์นี้และเรียกใช้ในพื้นหลัง: sleep X do_task แต่นั่นก็ดูเหมือนว่าจะเป็นเรื่องไร้สาระ: ฉันต้องการสคริปต์ใหม่สำหรับแต่ละงานหรือฉันต้องเขียนและบำรุงรักษาสคริปต์ทั่วไปพอที่จะทำสิ่งที่ฉันต้องการไม่ต้องพูดถึงว่าฉันต้องคิดออกว่ากี่วินาทีในไม่กี่นาที ชั่วโมงหรือวันที่ฉันต้องการ ไม่มีวิธีแก้ไขปัญหานี้ที่สร้างไว้แล้วหรือไม่?

2
“ INFO: task XXX ถูกบล็อกนานกว่า 120 วินาที” หมายถึงอะไรบน Linux?
ฉันมีข้อความนี้ในบันทึกเคอร์เนลของฉัน: INFO: task XXX blocked for more than 120 seconds. ฉันต้องการทราบความหมายทางเทคนิค: เคอร์เนลแสดงข้อความเกี่ยวกับงานภายใต้เงื่อนไขใด สำหรับบันทึกงานที่ถูกบล็อกของฉันคือmultipathdแต่ฉันก็สนใจในความหมายทั่วไปของข้อผิดพลาดนี้

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