Linux eşzamanlı disk IO'sunu nasıl işler?


12

Bir Linux sunucusu birçok farklı dosyayı okumak için birçok eşzamanlı istekte bulunurken, bunu yapar:

  1. Dosya_1'ye gidin, tüm dosyayı okuyun, ardından Dosya_2'yi arayın, tüm dosyayı okuyun, ardından Dosya_3'ü vb.

  2. Dosya_1'ye gidin, bir kısmını okuyun (okunan değer değerine kadar?), Ardından Dosya_2'yi arayın, bir kısmını okuyun, ardından bıraktığı Dosya_1'e geri dönün, daha fazlasını okuyun, ardından Dosya_3'ü arayın, vb. vb

2. durum ise, sunucu gerekenden çok daha fazla arama yapıyor, bu da işleri önemli ölçüde yavaşlatacak. Bu durumda yapabileceğim bir ayar var mı?

Yanıtlar:


14

Disk G / Ç'de asansör adı verilen bir şey vardır. Disk alt sistemi, disk başlığının plakaların her tarafına çarpmasını engellemeye çalışır. G / Ç isteklerini yeniden düzenler (örneğin bir bariyer tarafından yasaklanmadığında), böylece kafa diskin içinden dışarıya ve geriye doğru hareket eder ve yolda istenen G / Ç'leri gerçekleştirir.

İkinci şey, G / Ç isteğinin birleştirilmesidir. Kısa bir süre içinde dosyanın farklı bölümlerine erişen çok sayıda istek varsa, G / Ç alt sistemi, birkaç ayrık istek vermek yerine tüm verileri tek seferde almaya çalışır.

Tuning kadarıyla. Uygulama yazarı iseniz, yapabileceğiniz çok şey var. Ne zaman ve ne zaman fsync () et.al kullanabilirsiniz. verilerin plakalarda olduğundan emin olmanız gerektiğinde.

Eğer bir sysadmin iseniz ve kesinlikle biliyorsan, 2 uygulamanın veri istekleri sıçrama ve onlar sırayla dosyaları okumaya çalışıyorum (örneğin paralel olarak kod dönüştürülmüş 2 DVD var), o zaman evet, artan readahead yardımcı olacaktır. Aksi takdirde, herhangi bir ayarlama yapmadan önce I / O desenlerinize ve boyutlarınıza bakmanız, RAID seviyenizi (varsa) ve diğer faktörleri göz önünde bulundurmanız gerekir. Gerçek darboğazlarınızın ne olduğuna bakın, ayarlamaya başlamadan önce sisteminizi gerçekten neyin sınırladığını tahmin etmek zor olabilir.


5

Linux'ta kendi programlama algoritmanızı tanımlayabilirsiniz, farklı olasılıklarınız var, okulda bir parça yapmak zorunda kaldım ve Red Hat'ın bu makalesi bana çok yardımcı oldu. Özellikle Red Hat için olmasına rağmen, bu zamanlayıcıları neredeyse her linux dağıtımında bulabilirsiniz.

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.