เหตุใดเครื่องมือค้นหาจึงทำงานที่มีลำดับความสำคัญต่ำเช่นนี้


13

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

เล่นps -Alแสดงให้เห็นว่าเห็นได้ชัดโดยค่าเริ่มต้นDock, FinderและSystemUIServerทั้งหมดดูเหมือนจะทำงานที่มีความสำคัญไกลลดการใช้งานแล้ว userland ในขณะที่แอปพลิเคชันของผู้ใช้มีลำดับความสำคัญเท่ากับ 33 แต่ Dock, Finder และอื่น ๆ มีลำดับความสำคัญเท่ากับ 53

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

อย่างไรก็ตามการใช้การrenice -20 -p <prid>กระแทกเหล่านั้นมีความสำคัญเท่ากับส่วนที่เหลือของ UI ผู้ใช้และทำให้ไม่ต้องรอ 1-3 วินาที (!) สำหรับ UI เพื่อตอบสนองต่อสิ่งที่ง่ายเพียงแค่คลิกเมาส์

แธดกล่าวว่าฉันมีสองคำถาม:
มีเหตุผลใดที่ฉันไม่ควรเปลี่ยนลำดับความสำคัญของเธรดของตัวค้นหาเช่นนี้?
มีวิธีใดที่จะทำให้การเปลี่ยนแปลงลำดับความสำคัญคงอยู่เช่นนั้นจะยังคงเป็นเช่นนั้นหลังจากรีบูต


9
ฉันมักจะพบว่ามันเป็นดิสก์ i / o ไม่ใช่โหลด cpu ที่ทำให้ระบบของฉันรวบรวมข้อมูล ตัวค้นหาและแอปพลิเคชั่นอื่น ๆ ที่คุณพูดถึงอาจรออ่าน / เขียนเมื่อดูเหมือนว่าไม่ตอบสนอง ฉันไม่มีวิธีแก้ไขปัญหานี้ (นอกเหนือจากการใช้ดิสก์ที่รวดเร็วเหมือน SSD) ดังนั้นฉันจะโพสต์สิ่งนี้เป็นความคิดเห็นแทนคำตอบ
Kyle Cronin

5
ฉันก็คิดเช่นกัน อย่างไรก็ตามการเปลี่ยนลำดับความสำคัญด้ายไม่ส่งผลกระทบต่อพฤติกรรม UI ซึ่งทำให้ฉันคิดว่าทั้งสองมีความสำคัญด้ายยังมีผลต่อการจัดการคิว IO หรือมันย่อมเป็น CPU จำกัด
ชื่อปลอม

1
ตัวอย่างเช่นเมื่อระดับความสำคัญของท่าเทียบเรือเหลือเป็นสต็อคจะใช้เวลา 5-10 วินาทีในการตอบสนองต่อเมาส์ที่กำลังเคลื่อนไป เมื่อมันชนเองด้วยตนเองถึง 33 เหมือนกับทุกสิ่งทุกอย่างมันจะตอบสนองทันที (แม้ว่าจะมีความเปลี่ยนแปลงเล็กน้อย)
ชื่อปลอม

3
อัปเดต: คำสั่ง nice ส่งผลต่อการจัดการคิวทั้ง CPU และ IO: insanelymac.com/forum/lofiversion/index.php/t164156.html
ชื่อปลอม

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

คำตอบ:


1

ฉันไม่แน่ใจว่าใครก็ตามที่ขาดนักพัฒนาของ Apple จะสามารถตอบคำถามนี้ได้ความลับภายในของ Finder's เป็นโดเมนของพวกเขา หากคุณคิดว่ามีปัญหาความล่าช้าที่เห็นได้ชัดเจนเกี่ยวกับ UI คุณอาจต้องการส่งรายงานข้อผิดพลาดถึง Apple เกี่ยวกับเรื่องนี้

ตัดสินจากเสียงของสิ่งต่าง ๆ (กระบวนการใช้ทรัพยากรทั้งหมดโดยเจตนา) นี่เป็นกรณีเล็กน้อยสำหรับการจัดการหน่วยความจำ ฉันยังไม่เห็นระบบทำงานได้ดีที่สุดโดยไม่มีทรัพยากรประมาณ 10-20% ฟรีเป็นตัวช่วยบัฟเฟอร์

เพียงแค่อยากรู้อยากเห็นสิ่งที่เป็นกระบวนการเหล่านี้คุณกำลังทำงานอยู่หรือไม่


Python เป็นหลัก ทำการคำนวณแบบเรียกซ้ำจำนวนมาก
ชื่อปลอม

นอกจากนี้การประมวลผลภาพเป็นชุด
ชื่อปลอม

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

1

"ฉันใช้การนำเข้ารูรับแสงขนาดใหญ่และทำให้ระบบของฉันช้าลงเป็นการรวบรวมข้อมูลทั้งหมด"

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

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

สำหรับผู้ใช้ทุกคนที่บ่นว่าแอปพลิเคชันอื่นไม่ตอบสนองเพียงพอมีผู้ใช้รายอื่นบ่นว่าแอปพลิเคชันที่ใช้งานไม่ทำงานเร็วพอ

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

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


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

ตัวอย่างเช่นใน Windows 7 ซึ่งมีหนึ่งใน GUI ที่ตอบสนองได้ดีที่สุด Window-Manager จะทำงานโดยอัตโนมัติโดยมีระดับความสำคัญเป็น "สูง" ตอนนี้หมายความว่าพฤติกรรมที่ไม่เหมาะสมของกระบวนการนี้จะทำให้ระบบล่าช้า แต่ก็หมายความว่าการกระทำผิดนั้นจะไม่เกิดขึ้นที่อื่น ฉันเคยมีแอพพลิเคชั่นพังใช้ 100% ของซีพียูทุกคอร์และ UI บน windows ยังคงตอบสนองได้ดีมาก
ชื่อปลอม

1
@Fake Name: Finder ไม่ได้จัดการกับส่วนอื่น ๆ ของ UI นอกเหนือจากหน้าต่างของตัวเอง (โฟลเดอร์และไอคอนเดสก์ท็อป) (เป็นไปได้ที่จะออกจาก Finder; มันหายไปแล้วและทุกอย่างยังคงใช้งานได้) SystemUIServer จัดการรายการในแถบเมนูด้านขวาและวางซ้อน "ขอบ" (ระดับเสียง / ความสว่าง ฯลฯ ) เท่านั้น การแสดงผลหน้าต่างและเหตุการณ์ต่างๆได้รับการจัดการโดยกระบวนการ WindowServer ทั้งหมด
Kevin Reid

@ ชื่อปลอมเป็นจุดชี้แจง: reniceทำงานกับกระบวนการไม่ใช่เธรด
Chris หน้า

1

ฉันโพสต์คำถามที่คล้ายกัน - นานมาแล้วใน ServerFault - แม้ว่าจะไม่ได้มุ่งเน้นไปที่ Finder เป็นพิเศษ (แม้ว่าฉันจะพบว่า Finder นั้นช้าเกินไปเช่นกัน) วิธี "renice" กระบวนการอย่างถาวรใน Mac OS X (หรือ iOS ฯลฯ ) มีการรวบรวมข้อมูลไม่มากนัก - เป็นวิธีที่ดีในการทำเช่นนี้ ... หรือว่าทำไมถึงเป็นเช่นนั้น ..

ฉันยังคงคิดเกี่ยวกับเรื่องนี้บ่อยครั้งและมีสองสามวิธีที่จะยุ่งเกี่ยวกับ "พื้นฐาน" ถ้าคุณกล้า ดังที่ได้กล่าวไปแล้วก่อนหน้านี้คุณสามารถทำเชลล์ chicanery ต่าง ๆ .. แต่ที่ดีสำหรับความผิดนั้นคือรูทีนการ/etc/rc*บูตต่าง ๆ.. ซึ่งมีอยู่ในนั้น .. การตั้งค่าพารามิเตอร์ระบบตามอำเภอใจ แก้ไขสิ่งเหล่านั้นหรือค้นหาวิธีเพิ่มกิจวัตรของคุณเองในกระบวนการบูต

ถ้าคุณอยากทำให้หัวระเบิด ..

sudo sysctl list และมันเป็นกุญแจสำคัญในกล่องแพนโดร่าหรือที่รู้จัก /etc/sysctl.conf

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