POSIX durumu zaman uyumsuz G/Ç (AIO)? | Netgez.com
SORU
17 EYLÜL 2008, ÇARŞAMBA


POSIX durumu zaman uyumsuz G/Ç (AIO)?

Sayfalar ayrıntı değişen miktarlarda POSIX AIO imkanları açıklayan web dağınık. Hiçbiri çok yakın. Tam olarak tarif ediyorlar ne olduğu belli değil. Örneğin, "" (?) resmi web site for Linux kernel asynchronous I/O support here yuva iş yok, ama "aıo.h" keyfi dosya tanımlayıcıları için benim Ubuntu üzerinde çalıştığını ima görünüyor tüm 8.04.1 istasyonu kılavuz sayfaları. another project that seems to work at the library layer bile daha az belgeleri var.

Bilmek istiyorum:

  • POSIX AIO amacı nedir? Bulurum bir uygulama bunun en bariz örneÄŸi yuva desteklemiyor diyor göz önüne alındığında, bütün bu iÅŸ bana garip geliyor. Sadece zaman uyumsuz disk G/Ç? EÄŸer öyleyse, neden hiper-genel API? Neden disk g/saldırıya uÄŸrayan ilk ÅŸey O deÄŸilse?
  • Nerede örneÄŸi vartamamlayınBak ben bu AIO programları POSIX?
  • Birileri bunu gerçekten kullanıyor mu?
  • Platformlar POSIX AIO ne desteÄŸi? Ne bu parçaları destekliyorlar mı? Herkes çok destek ima "Herhangi/herhangi FD ** 0 * söz gibi görünüyor"?

Diğer çoklu mekanizmalar bana uygun gayet iyi, ama bilgi rasgele parçaları beni meraklandırdı var orada etrafında yüzen.

CEVAP
15 Mart 2011, Salı


Soket verimli I/O yapıyor kqueue, epoll, G / Ç tamamlama bağlantı noktaları ve seviyor ile çözüldü. İşin zaman uyumsuz dosya g/Ç geç comer (dışında windows' çakışan G/Ç ve posıx AIO için erken destek solaris). bir bakıma

Eğer G/Ç yuva yapmak için arıyorsanız, muhtemelen yukarıdaki mekanizmaları kullanarak daha iyidir.

Ana amaç AIO ise, bu sorunu çözmek için zaman uyumsuz disk G/Ç Bu büyük olasılıkla neden Mac OS X destekler AIO için düzenli dosyalar, soketler (beri kqueue yapan çok daha iyi zaten).

Yazma işlemi genellikle çekirdek tarafından önbelleğe alınır ve daha sonra temizlendi. Sürücünün okuma kafası konumu ile geçmek olduğunda örneğin blok yazılmadı.

Eğer öncelik ve sipariş için çekirdek istiyorsanız ancak, okuma işlemleri için, gerçekten tek seçenektir AIO okur. Bu kernel (teorik olarak) daha iyi herhangi bir kullanıcı düzeyinde uygulama daha yapabilir işte bu yüzden:

  • Çekirdek O deÄŸil, sadece uygulamalar disk iÅŸim ve küresel düzeyde sipariÅŸ verebilir Tüm disk görür
  • Çekirdek (Mayıs) disk kafası okuma ve optimum sırada ona iletirsin okuma iÅŸlerini almak, kafa en kısa mesafe taşımak için
  • Çekirdek native command queuing avantaj okumak iÅŸlemlerinizi daha da iyileÅŸtirmek için alabilir
  • Sen-ebilmek muktedir sorunu daha fazla okuma iÅŸlemi başına sistem çaÄŸrısı kullanılarak lio_listio() daha readv(), özellikle eÄŸer okur deÄŸil (mantıksal olarak) bitiÅŸik, tasarruf bir nebze sistem çaÄŸrı Tepegöz.
  • Program okunan bir blok veya çaÄŸrı yazmak için ekstra bir iÅŸ parçacığı gerekmez beri AIO ile biraz daha basit olabilir.

Bu, posıx AIO, örneğin: oldukça garip bir arayüze sahiptir. " dedi

  • Olay geri çaÄŸrıları, verimli ve iyi desteklenen tek anlamı zor kullanarak sinyal sayılar anlamına geldiÄŸi bir kütüphane kullanmak için iÅŸlem genel bir sinyal ad kılan sinyalleri, üzerinden. EÄŸer OS deÄŸil destek gerçek zamanlı sinyaller, bu da demek zorunda döngü ile tüm bekleyen istekleri için anlamaya hangisi gerçekten bitmiÅŸ bu dava için Mac OS X için örnek, Linux). Bir çok iÅŸ parçacıklı ortamda alıcı sinyalleri de karmaşık bir kısıtlama yapar. Genellikle sinyal iÅŸleyicisi içinde olay tepki vermiÅŸ olabilir, ama bir sinyal yükseltmek, bir boru yazmak veya signalfd kullanmak zorunda() (linux üzerinde).
  • () lio_suspend seçmek gibi aynı sorunları var (), çok iyi iÅŸlerin sayısı ile ölçek deÄŸil.
  • uygulanan iletebilirsiniz iÅŸleri oldukça sınırlı sayıda taşınabilir bir ÅŸekilde bu sınırı bulmak için önemsiz deÄŸildir. () lio_listio, Aramalısın sysconf(_SC_AÄ°O_LÄ°STÄ°O_MAX), baÅŸarısız olabilir, bu durumda kullanabilirsiniz AÄ°O_LÄ°STÄ°O_MAX tanımlamak, ille tanımlanmış, ancak daha sonra kullanabilirsiniz 2, olarak tanımlanır garantili destekledi.

Gerçek dünya uygulamaları için posıx AIO kullanarak, destek tanıtırken (lighty) performance measurement gönderemediği lighttpd bir göz atın.

En posıx platformlar posıx şimdi AIO (Linux, BSD, Solaris, AİX, tru64) destekler. Windows çakışan dosya g/Ç Benim anlayış sadece Solaris, Windows ve Linux gerçekten uyumsuz destekleyen yoluyla destekler. Diğer İşletim Sistemleri zaman uyumsuz taklit ise sürücü tüm yol aşağı Ey, I/dosya. O çekirdek iş parçacığı ile. Linux istisna olmak üzere, yerel uyumsuz ben ise abone olarak giriş taklit posıx AIO uygulaması kullanıcı seviyesi ile zaman uyumsuz işlemler iş parçacığı, (() io_submit vb.)/Ç arabirimi gerçekten sürücü için sürücü destekler varsayarak uyumsuz.

İşletim sistemleri arasında oldukça yaygın herhangi fd için posıx AIO destek değil, ama düzenli dosyalar ile sınırlamak için olduğuna inanıyorum.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • Cristina Landa

    Cristina Lan

    28 Ocak 2010
  • FailArmy U

    FailArmy U

    29 AÄžUSTOS 2009