2011-02-08 15 views
6

Linux çekirdeği sürümü 2.6.18-194.26.1.el5 çalıştıran bir CentOS 5.5 makinesinde, posix_fadvise (WILLNEED) cihazının 60K dosyalarını normal IO'dan neredeyse% 200 daha yavaş okumayı başardığını fark ettim.posix_fadvise (WILLNEED), IO'yu daha yavaş mı yapıyor?

Gerçek fadvise çağrısının eşzamanlı olduğu ve uygulamadaki diğer iş parçacıklarının dosyalardan okunan verileri kullanan zamanlamayı geciktirdiği anlaşılıyor.

Çekirdeğin fadvis çağrısı nedeniyle disklerden veri almasıyla meşgul olması ve diğer zamanlanmış görevleri geciktirmesi mümkün mü? Bir fadvise çağrısı yapmaktan beklediğimiz beklenen asenkron prefetch davranışına aykırı görünüyor.

Soruma şudur: posix_fadvise (WILLNEED) için eşzamansız davranışı zorlamak için kullanılabilecek herhangi bir ayarlanabilir çekirdek parametresi var mı? Artan çekirdek IO konuları gibi, sayfa önbelleği?

cevap

7

Bu son zamanlarda asked on LKML ürünündeydi. Bu sadece nasıl tasarlandı. Engellemeyi engelleyen bir fadvise gerekiyorsa, başka bir iş parçacığında yapın.

+0

Cevabınız için teşekkürler. Bağlantıda verilen cevap, çekirdeğe verilen IO isteklerinin sayısına işaret eder. Bu yapılandırılabilir bir sayı mı? Sistem çok fazla kaynağa sahipse, bu sıranın artırılması eşzamanlı davranışın etkisini azaltmaya yardımcı olabilir ... – Specksynder

+0

[sıra başına nr_requests', böylece ayarlayabilirsiniz] (https://www.kernel.org/doc/Documentation /block/queue-sysfs.txt). Ne başlatıldığından emin değilim. – sourcejedi

İlgili konular