Finder neden bu kadar düşük bir işlem önceliğinde çalışıyor?


13

Bu konuda biraz kayboldum.
Diyafram açıklığında büyük bir içe aktarma gerçekleştiriyorum ve sistemimin tam bir taramaya yavaşlamasına neden oluyor, temelde herhangi bir şey için kullanılamaz hale geliyor, hatta web'e göz atıyor. Bu biraz doğal görünmediğinden etrafa bakmak için biraz zaman geçirdim.

Koşu ps -Algörünüşte varsayılan olarak, gösteriler Dock, Finderve SystemUIServertüm bir öncelik uzak sonra userland uygulamaları düşürmek çalıştırmak gibi görünüyor. Kullanıcı uygulamaları genellikle 33 önceliğe sahipken, Dock, Finder vb. Önceliği 53'tür.

Sonuç olarak, HERHANGİ BİR işlemci yoğun görevi kullanıcı arayüzünü tamamen engeller ve sistemi bitene kadar kullanılamaz hale getirir.

Her neyse, renice -20 -p <prid>bunları kullanıcı alanı kullanıcı arayüzünün geri kalanıyla aynı önceliğe çarptırır ve kullanıcı arayüzünün fare tıklaması kadar basit bir şeye yanıt vermesi için 1-3 saniye (!) Beklemek zorunda kalmaz.

Thad, iki sorum var:
Bulucunun iş parçacığı önceliğini bu şekilde değiştirmemem için herhangi bir neden var mı?
Öncelik değişikliğini kalıcı yapmanın herhangi bir yolu var mı, örn. Yeniden başlattıktan sonra bu şekilde kalır.


9
Tipik olarak, sistemimin taranmasına neden olan cpu yükü değil, disk i / o olduğunu buldum. Finder ve bahsettiğiniz diğer uygulamalar muhtemelen yanıt vermiyor gibi göründüğünde okuma / yazma işlemlerini beklemektedir. Gerçekten bu bir çözüm (SSD gibi hızlı bir disk almak dışında) olsa da, bu yüzden bu bir cevap yerine bir yorum olarak göndereceğiz.
Kyle Cronin

5
Ben de düşünürdüm. Ancak, iplik önceliği değişiyor mu beni iplik önceliği ya da IO kuyruk işleme etkilediğini düşünüyorum, ya da gerçekten CPU sınırlı olduğu yapar UI davranışını etkiler.
Sahte İsim

1
Örnek olarak, yerleştirme önceliği stok olarak bırakıldığında, üzerine getirilen fareye tepki vermek 5-10 saniye sürer. Manuel olarak diğer her şeyle aynı 33'e çarptığında, hemen tepki verir (biraz kesiklik olsa da).
Sahte İsim

3
Güncelleme: güzel komut CPU hem etkiler ve IO kuyruk işleme: insanelymac.com/forum/lofiversion/index.php/t164156.html
Sahte Adı

2
Sorun bellek / disk alanı sınırlaması değildir. Kasıtlı olarak alabilecekleri tüm kaynakları alan süreçler yürütüyorum . Uygun bir ayarlama programı, öncelik ayarının doğru yapılması şartıyla, sistemin buna rağmen mükemmel şekilde yanıt vermesine (veya en azından sadece küçük bir performans vuruşuna neden olmasına ) izin vermelidir . Bununla birlikte, bazı çılgın nedenlerden dolayı, UI'nin en önemli yönü mümkün olan en düşük önceliğe ayarlanmıştır ve bu nedenle tüm sistem temelde kullanılamaz hale getirilmiştir.
Sahte Ad

Yanıtlar:


1

Apple'ın kendi geliştiricilerinden kısa kimsenin bu soruya cevap verebileceğinden emin değilim, Finder'ın iç sırları kendi alanları. Kullanıcı arayüzünde bazı belirgin gecikme sorunları olduğunu düşünüyorsanız, Apple'a bununla ilgili bir hata raporu göndermek isteyebilirsiniz.

Bir şeylerin sesinden yola çıkarak (tüm kaynakları kasıtlı olarak alan süreçler) bu, bellek yönetimi için biraz önemli bir durumdur. Bir sistemin arabelleğe alma yardımı olarak% 10-20 civarında kaynaksız bir yerde olmadan en iyi performansı sergilediğini görmedim.

Sadece merak ne olduğunu çalıştırdığınız bu süreçler?


Python, öncelikle. Bazı ağır özyinelemeli hesaplamalar yapmak.
Sahte Ad

Ayrıca, toplu görüntü işleme
Sahte Adı

Bu, CPU probleminden ziyade RAM kullanım problemine benziyor. Git kullanıcı arayüzünde gecikmeden tonlarca CPU kullanmak gibi bir şey yaşadım, ancak bir şey tüm RAM'i yemeye başladığında UI büyük bir darbe alıyor. Bu işlemler sırasında RAM kullanımınız nasıl?
Tim

1

"Diyafram açıklığında büyük bir içe aktarma gerçekleştiriyorum ve bu, sistemimin tam bir taramaya yavaşlamasına neden oluyor"

O zaman Diyafram (muhtemelen) istediğiniz programdır renice, diğerleri değil. Bahsettiğiniz işlemler ortalama kullanıcı uygulamalarına göre ayarlanır, böylece kullanıcı uygulamaları daha fazla öncelik kazanır ve duyarlı kalır, çünkü kullanıcıların çoğu zaman kullandıkları şeydir.

Durumunuz, uygulamanın uzun vadeli, yoğun bir görev gerçekleştirdiği ve kullanıcının aynı anda başka bir şey yapmak istediği daha az yaygın olan durumdur. Varsayılan olarak, bu yoğun görevlerin daha fazla kaynak alması ve daha kısa sürede tamamlanması kullanıcının öncelikli uygulamalarıdır.

Diğer uygulamaların yeterince yanıt vermediğinden şikayet eden her kullanıcı için, etkin uygulamanın yeterince hızlı çalışmadığından şikayet eden başka bir kullanıcı var.

Uzun, kaynak yoğun bir görev yürütüyorsanız ve görev tamamlanırken diğer işlemleri kullanabilmeniz için daha düşük önceliğe sahip olmasını istediğinizi biliyorsanız ve yoğun görev daha uzun sürerse sorun olmazsa, yoğun görevi yürüten süreç.

İkinci sorunuza gelince, renicedaha otomatik hale getirmek için birkaç olası çözüm var . Örneğin, Aperture'ı daha düşük bir öncelikte çalıştıran bir komut dosyası uygulaması oluşturabilir ve bunu Aperture'ı başlatmak için kullanabilirsiniz. Veya Aperture'ı * .command dosyasında depolanan bir kabuk komut dosyasıyla başlatabilirsiniz (ancak, Terminal'i açacak ve komutu bir terminal penceresinde çalıştıracak, istediğiniz şey olmayabilir). Bunların her biri biraz dahil. Örnek almak isterseniz, bunları daha sonra sunmayı görebilirim.


Arka plan görevleri, tanım gereği , ön plan görevlerinden daha düşük bir öncelikte olmalıdır. En önemli ön plan görevi Bütün sistemde büyük ölçüde Bulucu süreçtir GUI vardır. İş parçacıkları bir reniceşeyler süreç bazında yama ile yama olabilir , ama asıl sorun bulucuların önceliği.
Sahte Ad

Örneğin, en duyarlı GUI'lerden birine sahip olan Windows 7'de, Pencere Yöneticisi otomatik olarak "Yüksek" önceliğiyle çalışır. Şimdi, başka yerde aksaklığı bu sürecin aksaklığı lag sistemin neden olacağını araçlar, aynı zamanda araç olacak değil . Her CPU çekirdeğinin% 100'ünü kullanmak için uygulamalar çöktü ve pencerelerdeki kullanıcı arayüzü hala son derece duyarlı.
Sahte Ad

1
@Fake Adı: Bulucu yok değil kendi pencereleri (klasörler ve masaüstü simgeleri) dışında UI herhangi bir yönünü ele. (Finder'dan çıkmak mümkündür; aslında gitti ve her şey hala çalışıyor.) SystemUIServer menü çubuğunun sağ tarafındaki öğeleri ve "çerçeve" kaplamalarını (ses / parlaklık, vb.) İşler. Pencere oluşturma ve olaylar tamamen WindowServer işlemleri tarafından işlenir.
Kevin Reid

@Fake Name, bir açıklama noktası olarak: reniceiş parçacıkları üzerinde değil, işlemlerde çalışır.
Chris Page

1

Benzer bir soruyu - uzun zaman önce, ServerFault'ta - Finder'a özel olarak odaklanmamış olmama rağmen (Finder'ı dayanılmaz derecede yavaş bulmasına rağmen). Mac OS X (veya iOS vb.) Üzerinde bir işlemi kalıcı olarak “yeniden adlandırma” Orada pek fazla bilgi toplanmadı - bunu yapmanın iyi bir yolu ... ya da neden böyle olduğu hakkında ..

Ben hala bunu sık sık düşünüyorum, ve eğer gerçekten cesaretin varsa "temelleri" ile karıştırmak için birkaç yolu vardır. Daha önce de belirtildiği gibi, çeşitli kabuk chicanery yapabilirsiniz ... ama bu tür misdeeds için iyi bir yer /etc/rc*zaten orada olan çeşitli önyükleme rutinleri .. sizin için her türlü keyfi (elma tanımlı) sistem parametreleri ayarlama. bunları düzenleyebilir veya önyükleme işlemine kendi rutinlerinizi nasıl ekleyeceğinizi arayabilirsiniz.

ayrıca, eğer başınızı gerçekten patlatmak istiyorsanız ...

sudo sysctl list ve pandora'nın kutusunun anahtarı, aka /etc/sysctl.conf

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.