OS X'te işlemci benzeşimi nasıl ayarlanır?


17

MacBook Pro'da Snow Leopard'da işlemci benzeşimini nasıl ayarlarsınız? Windows'da Görev Yöneticisi'nde değiştirebileceğinizi biliyorum.


2
<snarky-comment> OS X'i sanal bir makinede çalıştırın ve sanal makinenin benzeşimini ayarlayın </snarky-comment>
zildjohn01

Bunu neden yapmak istiyorsun? Çok çekirdekli sistemlerde kırılan çok kötü kodlanmış eski programları çalıştırmaya çalışmadığınız sürece genellikle kötü bir fikirdir.
jalf

2
@jalf: işlemci benzeşimi bazı durumlarda önbellek geçersiz kılma ve çöpe atmayı azalttığı için performansı artırabilir.

1
Bu hayal kırıklığı yaratıyor. Mac'in gerçek zamanlı yazılım geliştirme için asla ideal bir platform olmayacağı anlaşılıyor.
Evan Plaice

1
@jweyrich Mac Pro'daki gibi QPI (Intel'in NUMA'sı) olan CPU'larda, CPU benzeşimi ayarının bellek benzeşimini devre dışı bıraktığı ve performansı düşürdüğü durumlar. Bu, mobil işlemciler için geçerli değildir.
Jano

Yanıtlar:


14

OS X, sürüm 10.5'ten bu yana bir iş parçacığı benzeşimi API'sını destekledi . Bağlantı verdiğim web sayfasından alakalı bazı materyaller.

Yakın İlgi Alanı Seti

Yakın ilgi alanı kümesi, bellek kaynaklarını paylaşan ve L2 önbelleğini paylaşmak isteyen bir iş parçacığı koleksiyonudur. Farklı benzeşim kümeleri ayrı benzeşimleri temsil eder, yani farklı bir kümeye ait iş parçacıkları ayrı bir L2 önbelleği kullanmalı ve bu nedenle farklı bir mantıksal işlemcilerde çalıştırılmalıdır.

Bir yakınlık kümesi bir "etiket" ile tanımlanır. İş parçacıkları, belirli bir yakınlık kümesine, bu kümesi tanımlayan etiket atanarak atanır. Bir iş parçacığı en fazla bir yakınlık kümesine ait olabilir; yani, bir yakınlık etiketi vardır.

Farklı Yakınlık Etiketleri Ayarlamanın Etkisi

Örneğin, ayrı L2 önbelleklerinde 2 iş parçacığı çalıştırmak isteyen bir uygulama, iş parçacıklarını farklı yakınlık etiketlerine ayarlayacaktır. Çift çekirdekli bir makinede, bu yakınlık etkili bir şekilde göz ardı edilecektir. Ancak, 4 çekirdekli bir MacPro'da, zamanlayıcı iş parçacıklarını ayrı paketler üzerinde çalıştırmayı dener. Benzer şekilde, 8 çekirdekli bir MacPro'da, zamanlayıcı bu dişleri ayrı kalıplarda (aynı fiziksel CPU paketinde olabilir veya olmayabilir) çalıştırmaya çalışır.

Örnek Kullanım

Kullanılabilir her işlemciye bir iş parçacığı yerleştirmek isteyen bir uygulama aşağıdakileri yapar:

  • Sistemdeki işlemci sayısını sysctl (3) kullanarak edinin.
  • Bu sayıda iş parçacığı oluşturun.
  • Her bir iş parçacığını farklı bir yakınlık etiketi ile ayarlayın.
  • Tüm konuları başlat.

Varsayılan yakınlık ilkesine sahip konular, herhangi bir işlemcide daha serbest bir şekilde planlanır. Bu iş parçacıkları, tercihen boş bir işlemcide çalışacak şekilde geçirilir. Yakın ilgi alanı etiketli konular yerinde kalma eğilimindedir.

Kod listeleri için kaynağa ve üst ve alt işlemler arasında yakınlık etiketlerinin paylaşılması, CPU önbellek yapılandırmasının alınması ve daha fazlası hakkında bilgi alın.


Bu API'ye ek olarak bir komut satırı yardımcı programı var mı?
Victor Eijkhout

11

http://developer.apple.com/mac/library/releasenotes/Performance/RN-AffinityAPI/

Mac OS X, işlemcileri tanımlayan veya iş parçacığı yerleşimini denetleyen arabirimleri dışa aktarmaz; işlemci bağlamaya açık iş parçacığı desteklenmez . Bunun yerine, çekirdek tüm iş parçacığı yerleşimini yönetir. Uygulamalar, zamanlayıcının çoğu durumda iş parçacıklarını önbellek yakınlığına göre iyi bir işlemci yerleşimi kullanarak çalıştırmasını bekler.


2
OS X, sürüm 10.5'ten bu yana bir iş parçacığı benzeşimi API'sını destekledi. Ayrıntılar için cevabıma bakın.
void-pointer

4

Şimdiye kadar, XNU (1504.3.12) zamanlayıcı, işlemler veya iş parçacıkları için işlemci benzeşimi uygulamıyor.

Yani MacOSX bunu yapmak için herhangi bir yol sunmuyor.


2

Http://images.apple.com/macosx/docs/OSX_for_UNIX_Users_TB_July2011.pdf adresinden

• Etkili çekirdek dişleri. Her POSIX iş parçacığı, belirli bir CPU üzerinde kuyruğa alınır ve kilit çekişmesini azaltırken işlemci benzeşimini ve ölçeklenebilirliğini artırır. İplikler, iptal desteği ve paylaşılan muteksler de dahil olmak üzere POSIX (1c) ile uyumludur.

Bana reklam gibi gözüküyor, iMac ile çalışan Lion'um çoğu zaman buna saygı duyuyor gibi görünse de bir çekirdeğe işlem yapmıyor.

Yine de darwin için süreç benzeşimini kontrol etmek için herhangi bir API bulamadım.

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.