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

เครื่องมือในการเปลี่ยนลำดับความสำคัญของกระบวนการทำให้มีเวลา CPU มากขึ้นหรือน้อยลง

3
ทำไมฉันไม่สามารถใช้ renice เพื่อเพิ่มมูลค่าที่ดีของกระบวนการได้?
จากman renice: ผู้ใช้รายอื่นนอกเหนือจากผู้ใช้ขั้นสูงอาจเปลี่ยนลำดับความสำคัญของกระบวนการที่พวกเขาเป็นเจ้าของและสามารถเพิ่มค่าที่ดี 'ของพวกเขา (เพื่อเหตุผลด้านความปลอดภัย)ภายในช่วง 0 ถึง PRIO_MAX (20) [... ] ดังนั้นฉันสามารถทำreniceกระบวนการของตัวเองให้สูงขึ้น (ให้ลำดับความสำคัญต่ำกว่า) แต่ไม่เคยลง: $ renice 10 22316 22316 (process ID) old priority 0, new priority 10 $ renice 9 22316 renice: failed to set priority for 22316 (process ID): Permission denied ทำไมนี้ ฉันสามารถเข้าใจได้ว่าทำไมผู้ใช้ปกติไม่สามารถตั้งค่าที่ดีได้ต่ำกว่า 0 แต่เพราะเหตุใดฉันสามารถลดลำดับความสำคัญเป็น 10 ฉันไม่สามารถเพิ่มความสำคัญเป็น 9 อีกครั้งได้ …
25 nice  priority 

5
จะยกเลิกการใช้เธรด (และลูก) ทั้งหมดของกระบวนการเดียวบน Linux ได้อย่างไร
ลินุกซ์ยังไม่ได้ปฏิบัติตามมาตรฐาน POSIX.1 ซึ่งระบุว่า a reniceในกระบวนการส่งผลกระทบต่อ "เธรดขอบเขตระบบทั้งหมดในกระบวนการ" เนื่องจากตามpthreads (7) doc "เธรดไม่ได้แชร์ค่า nice ที่ดี" อย่างไรก็ตามบางครั้งมันสามารถสะดวกในการrenice"ทุกอย่าง" ที่เกี่ยวข้องกับกระบวนการที่กำหนด (ตัวอย่างหนึ่งคือกระบวนการลูก Apache และเธรดทั้งหมดของพวกเขา) ดังนั้น, ฉันจะกระทู้reniceทั้งหมดที่เป็นของกระบวนการที่กำหนดได้อย่างไร ฉันจะกระบวนการลูกreniceทั้งหมดที่เป็นของกระบวนการที่กำหนดได้อย่างไร ฉันกำลังมองหาทางออกที่ค่อนข้างง่าย ฉันรู้ว่าบางครั้งกลุ่มกระบวนการอาจมีประโยชน์อย่างไรก็ตามพวกเขาไม่ตรงกับสิ่งที่ฉันต้องการทำเสมอ: พวกเขาสามารถรวมกระบวนการที่กว้างขึ้นหรือชุดที่แตกต่างกัน การใช้การcgroupจัดการโดยsystemdอาจมีประโยชน์ แต่แม้ว่าฉันสนใจที่จะได้ยินเกี่ยวกับมันฉันส่วนใหญ่มองหาโซลูชัน "มาตรฐาน" แก้ไข: ยังman (7) pthreadsบอกว่า "กระทู้ทั้งหมดในกระบวนการจะอยู่ในกลุ่มด้ายเดียวกันสมาชิกทั้งหมดของกลุ่มกระทู้ใช้ PID เดียวกัน" ดังนั้นมันเป็นไปได้ที่จะมีreniceบางสิ่งที่ไม่มี PID ของตัวเองหรือไม่?
22 linux  process  nice  thread 

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
กระบวนการนีซและลูก
ใครสามารถบอกฉันว่าอะไรคือความสัมพันธ์ระหว่างniceระดับที่ระบุและกระบวนการลูก? ตัวอย่างเช่นถ้าฉันมีค่าเริ่มต้นniceของ0และฉันเริ่มต้นสคริปต์ด้วยnice 5ซึ่งจะเริ่มต้นกระบวนการที่เด็กบางคน (ในกรณีนี้ประมาณ 20 ในแบบคู่ขนาน) สิ่งที่เป็นสิ่งที่ดีของกระบวนการที่เด็กหรือไม่
22 linux  process  nice 

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

2
คุณค่าความดีของ (-) หมายถึงอะไร
ตามหน้า man และ wikipedia; niceช่วงจาก -20 ถึง 20 แต่เมื่อฉันเรียกใช้คำสั่งต่อไปนี้ฉันพบว่าบางกระบวนการมีค่าที่ไม่ใช่ตัวเลขเช่น (-) ดูคอลัมน์ที่หกจากด้านซ้ายด้วยชื่อ 'NI' ความอ่อนโยนของ (-) บ่งบอกอะไร? ps axl F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND 4 0 1 0 20 0 19356 1548 poll_s Ss ? 0:00 /sbin/init 1 0 2 0 20 0 0 …

7
ฉันจะเริ่มต้นกระบวนการด้วยค่าที่ดีได้ที่ -20 และไม่ให้สิทธิ์รูท
ฉันต้องการเริ่มต้นกระบวนการด้วยค่าที่ดีของ -20 นี้ต้องให้ผมใช้คำสั่งเช่น sudo nice -n -20 matlab- อย่างไรก็ตามสิ่งนี้เริ่มต้นด้วย matlab ในฐานะรูทด้วย มีวิธีในการมี matlab ที่ไม่ใช่รูทหรือไม่? แนวทางปัจจุบันของฉันคือ - sudo nice -n -20 sudo -u myusername matlabซึ่งสำหรับฉันดูเหมือนว่าแฮ็ค มีวิธีโดยตรงในการทำเช่นนี้?
18 process  priority  nice 

3
ตั้งค่าความดีเป็นคำสั่ง piped
ฉันต้องการรันชุดคำสั่ง "piped" ที่มีระดับความละเอียดที่เปลี่ยนไป ตัวอย่าง: nice -n 15 command1 | command2 | command3 ในกรณีนี้ความละเอียดจะเปลี่ยนเป็น "15" สำหรับ command1 เท่านั้น วิธีการเปลี่ยนสำหรับชุดคำสั่งทั้งหมด (command1, command2 และ command3)?
15 nice 

2
การใช้และทำความเข้าใจกับตัวเลือกที่เกี่ยวข้องกับการตั้งเวลา systemd ในบริบทเดสก์ท็อป
ในไฟล์บริการ systemd หนึ่งสามารถตั้งค่าตัวเลือกที่เกี่ยวข้องกับการจัดตารางเวลาต่อไปนี้ (จากsystemd.execหน้าคนแก้ไขฉันถ้าฉันผิด): Nice ตั้งค่าระดับ nice เริ่มต้น (ลำดับความสำคัญตามกำหนดเวลา) สำหรับกระบวนการที่ดำเนินการ ใช้จำนวนเต็มระหว่าง -20 (ลำดับความสำคัญสูงสุด) ถึง 19 (ลำดับความสำคัญต่ำสุด) ดูsetpriority (2)สำหรับรายละเอียด ซึ่งเป็นระดับที่ดีที่คุ้นเคย ดูเหมือนว่าผลกระทบของมันคือ 'ล้มล้าง' ค่อนข้างเนื่องจากคุณสมบัติ 'กลุ่มอัตโนมัติ' ของเมล็ดลินุกซ์ที่ผ่านมา ดังนั้นตัวเลือกด้านล่างอาจเป็นสิ่งที่ฉันต้องการจะตั้งไว้เพื่อให้กระบวนการทำงานได้ดีสำหรับประสบการณ์เดสก์ท็อปของฉัน CPUSchedulingPolicy ตั้งค่านโยบายการกำหนดเวลา CPU สำหรับกระบวนการที่ดำเนินการ ใช้เวลาหนึ่งอื่นแบทช์ไม่ได้ใช้งาน fifo หรือ rr ดูsched_setscheduler (2)เพื่อดูรายละเอียด CPUSchedulingPriority ตั้งค่าลำดับความสำคัญการกำหนดเวลา CPU สำหรับกระบวนการที่ดำเนินการ ช่วงลำดับความสำคัญที่มีอยู่จะขึ้นอยู่กับนโยบายการตั้งเวลา CPU ที่เลือก (ดูด้านบน) สำหรับนโยบายการจัดตารางเวลาแบบเรียลไทม์สามารถใช้จำนวนเต็มระหว่าง 1 (ลำดับความสำคัญต่ำสุด) และ 99 (ลำดับความสำคัญสูงสุด) ได้ …

4
เรียกใช้กระบวนการ linux ที่มีความสำคัญต่ำมากใช่ไหม
ฉันมีกระบวนการปกติที่ไม่สำคัญ แต่จะใช้พลังงาน CPU มากและฉันมีกระบวนการอื่นที่สำคัญจริง ๆ แต่ใช้เวลาส่วนใหญ่ว่างเปล่า แต่เมื่อได้งานก็ต้องใช้พลังงานในการคำนวณสูง ฉันพยายามเรียกใช้ด้วยnice -20 ./low_priority_processและnice --20 ./high_priority_processยังคงมีลำดับความสำคัญต่ำกว่าใช้ CPU จำนวนมากเมื่อมีความต้องการกระบวนการที่มีลำดับความสำคัญสูงฉันจะเรียกใช้กระบวนการที่จะให้ผลจริงๆหรือแม้กระทั่งหยุดทำงานอัตโนมัติเมื่อกระบวนการอื่นใช้พลังงาน CPU
12 process  cpu  htop  priority  nice 

2
ฉันจะอนุญาตให้ผู้ใช้จัดลำดับความสำคัญของกระบวนการเพื่อลบความดีได้อย่างไร
ฉันต้องการให้ผู้ใช้เรียกใช้กระบวนการเฉพาะบนระบบที่มีค่าลบที่ดี ฉันไม่สามารถแยกกระบวนการเป็นพื้นหลังได้เนื่องจากโปรแกรมเฉพาะนี้เป็นเซิร์ฟเวอร์ minecraft และฉันใช้บรรทัดคำสั่งเพื่อควบคุมเซิร์ฟเวอร์ สคริปต์ทุบตีปัจจุบันของฉันมีลักษณะเช่นนี้ (ส่วนสำคัญ): sleep 10 && \ sudo renice -n $NICENESS $(ps -u $(id -u) -o "%p:%c" | sed -n "s/:java$//p") & \ java -Xmx8G -Xms2G -jar minecraft_server.jar nogui sleepreniceเพียงแค่ความล่าช้าในการดำเนินการของ reniceตัวเองใช้psในการตรวจสอบกระบวนการจาวาโดยใช้ ID ของผู้ใช้ อาจจะมีกรณีอื่น ๆ ของ Java พล่านภายใต้ผู้ใช้งานที่แตกต่างกัน แต่เซิร์ฟเวอร์ Minecraft ทำงานภายใต้ผู้ใช้ของตนเองMinecraft เห็นได้ชัดว่าฉันไม่ต้องการป้อนรหัสผ่านทุกครั้งที่ฉันเริ่มต้นเซิร์ฟเวอร์ จาก/ etc / sudoers : …

2
ตั้งค่าเริ่มต้นที่ดีสำหรับผู้ใช้ที่กำหนด (จำกัด
มีใครบอกวิธีตั้งค่าเริ่มต้นniceเป็น (ตามที่แสดงโดยtop) ของผู้ใช้ ฉันได้พบว่า / etc / security /limits.conf เป็นสถานที่ แต่ถ้าฉันใส่อย่างใดอย่างหนึ่ง: username_of_a_guy - nice 19 username_of_a_guy soft nice 19 username_of_a_guy hard nice 19 มันไม่ทำงาน (ในขณะที่ควรใช่มั้ย) โปรดทราบว่าฉันรีบูตเครื่องตั้งแต่นั้นมา ขอบคุณล่วงหน้ามากสำหรับความช่วยเหลือ ฉันใช้เดเบียนที่ไม่เสถียร (uptodate) บริบท: ที่ทำงานของฉันเรามีเครือข่ายท้องถิ่น: ทุกคนมีคอมพิวเตอร์เป็นของตัวเองและทุกคนสามารถสร้างบัญชีในเครื่องของคนอื่นได้หากชอบ กฎง่ายๆคือถ้าคุณทำงานกับคนอื่นในคอมพิวเตอร์โปรดดีกระบวนการของคุณ ( nice 19) ฉันต้องการตั้งค่าเริ่มต้นที่ดีสำหรับผู้ใช้ที่กำหนดเป็น 19 ครั้งและสำหรับทั้งหมด
12 login  nice  limit 

4
การตั้งค่าระดับที่ดีขึ้นสำหรับกระบวนการเป็นวิธีที่มีประสิทธิภาพในการลดผลกระทบต่อเวลาในการโหลดระบบ / CPU หรือไม่?
ฉันมีงาน rsync cron ซึ่งผลักภาระเซิร์ฟเวอร์และเรียกเตือนการตรวจสอบ หากฉันตั้งค่างานให้ทำงานในระดับดีมากจะช่วยลดผลกระทบที่มีต่อค่าโหลดระบบได้อย่างมีประสิทธิภาพหรือไม่
10 cron  rsync  io  load  nice 

2
คำสั่ง Unix ที่ดีที่สุดคืออะไร
สำหรับการทดสอบการเปรียบเทียบอย่างรวดเร็วจะสามารถรวม niceice และ ionice เข้ากับเอฟเฟกต์สูงสุดได้อย่างไรเช่นคำสั่งให้ใช้ทรัพยากรน้อยที่สุดเท่าที่จะเป็นไปได้ (ฉันคิดว่ามันคล้ายกับ `nice -n 19 ionice -c 2 [command] แต่ไม่แน่ใจเกี่ยวกับ ionice's" -n "(classdata param) หน้า man นั้นเป็นความลับเกี่ยวกับความเกี่ยวข้อง)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.