SORU
6 EYLÜL 2010, PAZARTESİ


Nasıl verimli bir dışlama kilidi kilitleme? Bir dışlama maliyeti nedir?

Düşük seviyeli dil (C, C ya da her neyse): var seçim arasında ya sahip bir sürü uyumu (nasıl pthread verir ya da her neyse yerel sistem kitaplığı sağlar) veya tek bir nesne.

Nasıl verimli bir dışlama kilitlemek için mi? I. e. ne kadar çevirici talimatları muhtemel ve ne kadar zaman alır (zaman uyumu kilitli durumda) var mı?

Ne kadar zaman uyumu bir maliyeti nedir? Bir sorun gerçekten var mıbir sürüuyumu? Ya ben sadece int değişkenler ve gerçekten önemli değil benim kod gibi çok zaman uyumu değişkenleri atabilir?

(Ne kadar farklı donanım arasında olmadığından emin değilim. Eğer varsa, onları da bilmek isterim. Ama çoğunlukla, genel donanım hakkında ilgileniyorum.)

Bu noktada, her nesne için tek bir dışlama yerine nesnenin yalnızca bir bölümünü kapsayan pek çok dışlama kullanarak, birçok engeller güvenli olabilir. Ve bunu nasıl yapmam gerektiğini nasıl merak ediyorum. I. e. Olası blok gerçekten mümkün olduğunca güvenli, ne kadar karmaşık ve ne kadar gelir olursa olsun denemeli miyim?

CEVAP
6 EYLÜL 2010, PAZARTESİ


Ya da birbirini kapsamayan nesneler bir grup veya nesne için bir tane olması arasında bir seçim var.

Birçok konu var ve bu nesne için erişim sık sık olur, o zaman birden fazla kilit paralellik artacaktır. Daha kilitleme beri sürdürülebilirlik, maliyet kilitleme daha fazla hata ayıklama anlamına gelir.

Nasıl verimli bir dışlama kilitlemek için mi? I. e. ne kadar çevirici talimatları muhtemel ve ne kadar zaman alır (zaman uyumu kilitli durumda) var mı?

Talimatları*1- the memory/cache coherency * garanti en az yükü vardır kesin çevirici ana yükü vardır. Ve daha az belirli bir kilit alınır daha iyi.

Dışlama iki ana bölümden oluşur (basite indirgemek): (1) bir bayrak dışlama veya kilitli değil ve (2) sıra beklemek olup olmadığını gösteren.

Bayrak değiştirmek sadece birkaç talimatları vardır ve normalde sistem çağrısı olmadan bitti. Eğer zaman uyumu kilitlendi, sistem çağrısı bekle içine çağıran iş parçacığı sıra ekleyin ve beklemeye başlar olacak. Eğer bekleme kuyruğu boşsa Anahtarcı,, ucuz ama aksi halde bekleyen işlemlerden birini uyandırmak için bir sistem çağrısı ihtiyacı var. (Hızlı sistem çağrıları birbirini kapsamayan nesneler uygulamak için kullanılır/bazı sistemlerde daha, (normal) anlaşmazlık durumunda sadece sistem çağrıları yavaş olurlar.)

Zaman uyumu kilidi kilitleme gerçekten ucuz. Anahtarcı dışlama w/çekişme daha çok olur o.

Ne kadar zaman uyumu bir maliyeti nedir? Bir sorun gerçekten uyumu bir şey var mı? Ya ben sadece int değişken var ve gerçekten önemli değil benim kod gibi çok zaman uyumu değişkenleri atabilir?

İstediğiniz gibi kod içine kadar zaman uyumu değişkenleri atabilirsiniz. Sadece uygulama ayırabilir bellek miktarı ile sınırlıdır.

Özet. Kullanıcı-uzay kilitleri (ve özellikle birbirini kapsamayan nesneler) ve herhangi bir sistem sınırlamak için ucuz değil tabi. Ama onlardan daha çok hata ayıklama için kabus anlamına geliyor. Basit tablo:

  1. Az kilitleri daha savlarının (sistem çağrıları, CPU tezgahları yavaş) ve daha az paralellik gösterir
  2. Az kilitleri daha az sorun Çoklu-işlem hata ayıklama anlamına gelir.
  3. Daha fazla kilit kavgaları ve daha az paralellik gösterir
  4. Daha fazla kilit undebugable kilitlenmeleri kaçmak için daha fazla şansı demektir.

Uygulama için dengeli bir kilitleme düzeni bulunmalı ve bakımı, genellikle #2 ve #3 dengeleme.


(*) Sorunu ile daha az çok sık kilitli uyumu olan varsa çok fazla kilitleme uygulama, neden çok ınter-İŞLEMCİ/core trafiğe floş zaman uyumu bellekten veri önbellek diğer İşlemciler için garanti önbellek tutarlılık. Önbellek temizleme hafif ve şeffaf CPU tarafından kesme işlenmiş gibi - ama stalls sözde tanıtmak yapıyorlar (search for "") durak.

Ve tezgahları kilitleme şifresi ne yapar yavaş yavaş, sık sık uygulama yavaş neden görünürde herhangi bir belirti olmadan çalıştırmak için. (Bazı kemer arası CPU/core trafik istatistikleri, bazıları değildir sağlamak.)

Bu sorunu önlemek için, insanlar genellikle çok sayıda kilitler için kilit kavgaları olasılığını azaltmak için ve yavaşlamayı önlemek için çare. Ucuz kullanım alanı kilitleme sistemi limitlerine tabi değil, var nedeni de budur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CodingMadeEasy

    CodingMadeEa

    25 EYLÜL 2010
  • TheSalband Rai

    TheSalband R

    11 NİSAN 2011
  • Trulia

    Trulia

    29 Kasım 2006