OpenVPN trafik sayaçları ile disk G/Ç: üç farklı sayı
Arayüz baytları, sürecin karakter sayaçları ve diske yazmalar farklı işleri ölçer. Diskleri tünel hacmine göre boyutlandırmadan önce bunları karşılaştırın.
Büyük bir dosyayı tünelden geçirin, arayüz sayacı dosyanın boyutu kadar artar. Bu sayıda aynı hacmin bir diske ulaştığını ima eden hiçbir şey yoktur. Bu tartışmalarda üç farklı ölçüm karşılaştırılır ve bunlar üç farklı soruyu yanıtlar: ne kadar trafik bir ağ katmanını geçti, bir süreç sistem çağrılarıyla kaç bayt okudu ve yazdı ve ne kadar iş depolama katmanına ulaştı.
Birinciyi üçüncüyle karşılaştırmak olağan hatadır ve ya hayalet bir disk sorunu ya da gerçekten olan yazmaları yok sayan bir kapasite planı üretir. Üçü ayrılabilir ve her birinin doğru bir kullanımı vardır.
Birbirine karıştırılan üç sayı
Arayüz sayaçları bir ağ katmanında işlenen trafiği tanımlar. Bant genişliği, tünelin boyutu ve geçişi fiyatlandıran faturalama modelleri için doğru sayı bunlardır.
Sürecin karakter sayaçları borular, terminaller ve karakter aygıtları dahil herhangi bir tanımlayıcı üzerindeki okuma ve yazma çağrılarıyla taşınan baytları tanımlar. Bir sürecin sistem çağrısı sınırında ne kadar meşgul olduğunu sormak için doğru sayı bunlardır ve bunlar bir depolama faturası değildir.
Depolama sayaçları çekirdeğin bir blok aygıtına veya oradan taşımaya çalıştığı baytları tanımlar. Kapasite planlaması için doğru sayı bunlardır; ancak çekirdek kendi muhasebe sınırlarını belgeler: önbelleğe alınan okumalar depolama okumalarına dönüşmez ve sonradan iptal edilen bir yazma tamamlanmış aygıt yazmasına dönüşmez.
| Measurement | Question it answers |
|---|---|
| Interface bytes | How much traffic crossed this layer |
rchar and wchar | How much data the process moved through system calls |
read_bytes and write_bytes | How much work reached the storage layer |
Bir dosya tanımlayıcısı neden disk yazması değildir
Kullanıcı alanındaki bir VPN, çekirdekle paketleri TUN aygıtı üzerinden değişir; bu aygıt normal bir dosya değil karakter aygıtıdır. Ondan okumak bir paketi teslim eder; ona yazmak bir paket enjekte eder. Depolama için hazırlanan bir dosya içeriği sayfası yoktur ve hiçbir dosya sistemi yolu işin içinde değildir.
Bu yüzden meşgul bir tünel neredeyse hiç depolama sayacı olmadan devasa karakter sayaçları gösterebilir. Süreç o baytları gerçekten taşıdı ve çekirdeğin bunu yapmak için gerçekten bir diske ihtiyacı yoktu.
cat /proc/$(pgrep -n openvpn)/io
ip -s link show tun0
İlk çıktıyı süreç başladığından beri birikimli olarak okuyun, hız olarak değil. İkincisi aynı trafiğin arayüz görünümünü verir. İkisi arasındaki büyük fark beklenir ve bir sızıntı, kuyruk veya yanlış yapılandırma olduğunu göstermez.
Baytlar gerçekte nereden gelir
Kalıcı çıktının kendi bütçesi vardır ve bu bütçeyi yük değil işlemler yürütür. Ayrıntılı bir günlük düzeyi, sık değişen bir istemci listesi veya sıkı bir döngüde yinelenen bir hata, tünel çok az taşırken bile önemli yazmalar üretebilir.
Durum dosyası belirli aralıklarla yeniden yazılan bir anlık görüntüdür, bu yüzden maliyeti aralığa ve içerdiği kayıt sayısına bağlıdır. Her istemcinin trafiğinin çalışan bir kopyası değildir ve aralığı kısaltmak trafik hacmini değiştirmeden yazma hacmini değiştirir.
O yazmaları ararken sahiplik önemlidir. Hizmet mesajları bir günlükleme daemonına devrediyorsa, günlüğü veya günlük dosyasını o daemon yazar ve baytlar VPN sürecinin kendi sayaçlarında değil o daemonın muhasebesinde görünür. Yalnızca VPN sürecine bakmak ne disk etkinliğini ne de yokluğunu açıklar.
Diğer katkıda bulunanları gözden kaçırmak kolaydır: açılışta sertifika ve yapılandırma okumaları, kendi kayıtlarını yazan kancalar, muhasebe eklentileri, çökme dökümleri ve aynı ana bilgisayardaki ilgisiz iş yükleri. Hiçbiri tünel trafiği yazılan baytlara eşitlenerek tahmin edilmemelidir.
Her sayacı doğru okumak
Üç ayrıntı bir karşılaştırmanın anlamlı olup olmadığını belirler. Sürecin kimliği önemlidir, çünkü yeniden başlatılan bir hizmet sayaçlarını sıfırlar. Zaman aralığı önemlidir, çünkü birikimli bir sayı ile saniyedeki grafik farklı ölçümlerdir. Ve birim önemlidir, çünkü bir günlük dosyasının güncel boyutu da bir hız değildir.
grep -E 'rchar|wchar|read_bytes|write_bytes' /proc/$(pgrep -n openvpn)/io
du -sh /var/log/openvpn 2>/dev/null
journalctl --disk-usage
Gerçek yük yazmalarından şüpheleniyorsanız, işi yükü depolamak olan bir bileşen arayın: paket yakalama aracı, gövdeleri önbelleğe alan vekil sunucu, arşivleyen eklenti. Bunlar kaydetmeleri istenene göre ölçeklenen depolama trafiği üretir ve saklama ile erişim konusunda ayrı bir politika kararına aittir.
Kapasiteyi doğru sayıyla planlamak
Paket yolunu ağ sayılarıyla ölçün: işlem hacmi, kriptografik işleme ve bellek hareketi. Depolamayı gerçekten verdiğiniz gözlemlenebilirlik kararlarıyla ölçün: günlük düzeyi, saklama, durum aralığı ve bilerek etkinleştirilen her yakalama.
Bu iki bütçeyi ayrı tutmak olayları okumayı da kolaylaştırır. Ilımlı tünel trafiğiyle dolu bir disk günlüklere, yakalamalara veya ilgisiz bir şeye işaret eder ve arayüz sayacı bunu asla açıklamaz. Sessiz bir günlükle dolu bir bağlantı ters yönü gösterir.
Yapmaya değer karşılaştırma aynı türden ölçümler arasındadır. Arayüz baytlarının zaman içindeki arayüz baytlarına karşı durumu size yolu anlatır. Depolama yazmalarının depolama kapasitesine karşı durumu size saklamayı anlatır. Çapraz karşılaştırma, yani trafiğin diske karşı durumu, yalnızca anlamlı görünür ve asla öyle değildir.