Özet
cvdbset [seçenekler]
Açıklama
cvdbset, sistem yöneticilerinin Xsan Dosya Sistemi istemci dosya sisteminden gelen cvdb(8) izleme bilgilerini kontrol etmeleri için bir araçtır.
Yayılan izleme düzeyi modül bazında kontrol edilebilir. İzlemenin etkinleştirildiği modüller kümesine izleme kümesi (trace set) denir. İzleme düzeyi, bir izleme noktası kümesi (giriş/çıkış noktaları gibi) belirtilerek daha da hassaslaştırılabilir. Etkinleştirilmiş izleme noktaları kümesine logmask denir.
[!WARNING] İzlemenin etkinleştirilmesi önemli bir performans etkisine neden olabilir.
cvdbset şu amaçlarla kullanılabilir:
- İzleme kümesindeki mevcut tüm istemci modüllerini listelemek.
- Tüm modülleri izleme kümesine eklemek.
- İzleme kümesini tanımlamak.
- Seçilen modülleri izleme kümesine eklemek.
- Seçilen modülleri izleme kümesinden kaldırmak.
- İzleme kümesindeki bir modül kümesi için logmask ayarlamak.
- Günlük kaydı tamponunu yeniden boyutlandırmak.
- Sürekli izlemeyi başlatmak/durdurmak.
- İzlemeyi devre dışı bırakmak.
Seçenekler
(seçenek yok): İzlemenin etkin/devre dışı olduğunu, günlük tamponunun boyutunu, izleme kümesindeki modülleri ve bunlara karşılık gelen logmask'leri görüntüler.all: Tüm modüllerin izlenmesini etkinleştirir.cvdbsetbir modül listesiyle çağrıldığında bazı modüller kapatılır.cvdbset all, tüm modülleri izleme için ayarlar.+veya-ile kullanıldığında, tüm modülleri ekler veya kaldırır.[:]module1 [:]module2 ...: Bir modül listesiyle çağrıldığında,cvdbsetönce tüm modülleri devre dışı bırakır. Ardından, tam olarak verilen modül listesini etkinleştirir. Etkinleştirilebilecek tüm modülleri görmek içincvdbset -lkomutunu/seçeneğini kullanın. Modül adının önüne:getirilirse, modül adını içeren tüm modüller etkilenir.+ [:]module1 [:]module2 ...: İlk argüman olarak bir artı işareti (+) ve ardından bir modül listesiyle çağrıldığında, verilen modül listesi mevcut izleme kümesine eklenir. Modül adının önüne:getirilirse, modül adını içeren tüm modüller etkilenir.- [:]module1 [:]module2 ...: İlk argüman olarak bir eksi işareti (-) ve ardından bir modül listesiyle çağrıldığında, verilen modül listesi mevcut izleme kümesinden kaldırılır. Modül adının önüne:getirilirse, modül adını içeren tüm modüller etkilenir.-h: Bir yardım mesajı görüntüler ve çıkar.-c: Süreklicvdbizlemesini etkinleştirir. İzleme günlüğü saniyede bir kez alınır vecvdbout.000001, ... olarak adlandırılan dosyalara yerleştirilir.-d:cvdbizlemesini devre dışı bırakır.-g: Mevcut izleme tamponunu standart çıktıya döker.-l: Günlük kaydının etkin olup olmadığını, tampon boyutunu ve tüm modüller için logmask değerini görüntüler.-L:-tseçeneği ile kullanılmak üzere kullanılabilir tüm izleme noktalarının listesini görüntüler.-r mb: İzleme tamponunumbmegabayt olarak yeniden boyutlandırır.-t tracepoint: Belirtilen modüller için yalnızca belirtilen izleme noktalarında izlemeyi etkinleştirir. Birden fazla-tseçeneği sağlanabilir. İzleme noktalarının listesini görmek içincvdbset'in-Lseçeneğini kullanın.
Örnekler
İzleme kümesinde hangi modüllerin olduğunu ve bunların logmask'lerini görmek için, parametresiz cvdbset komutu kullanılır:
cvdbset
# Çıktı:
# Debug logging is DISABLED, Bufsize 4194304
# Currently set masks:
# Module ' proxy_clnt' module 0x0000000000000001 logmask 0xffffffffffffffff
# Module ' cvdir' module 0x0000000000000002 logmask 0xffffffffffffffff
# Module ' cvdisk' module 0x0000000000000004 logmask 0xffffffffffffffff
# Module ' cvnc' module 0x0000000000000008 logmask 0xffffffffffffffff
# Module ' cvpath' module 0x0000000000000010 logmask 0xffffffffffffffff
# Module ' portmap' module 0x0000000000000020 logmask 0xffffffffffffffff
# Module ' cvsock' module 0x0000000000000040 logmask 0xffffffffffffffff
# Module ' cvsubr' module 0x0000000000000080 logmask 0xffffffffffffffff
# Module ' dmigfs' module 0x0000000000000100 logmask 0xffffffffffffffff
# Module ' dmig' module 0x0000000000000200 logmask 0xffffffffffffffff
# Module ' dmon' module 0x0000000000000400 logmask 0xffffffffffffffff
# Module ' extapi' module 0x0000000000000800 logmask 0xffffffffffffffff
# Module ' extent' module 0x0000000000001000 logmask 0xffffffffffffffff
# Module ' fsmat' module 0x0000000000002000 logmask 0xffffffffffffffff
# Module ' fsmcom' module 0x0000000000004000 logmask 0xffffffffffffffff
# Module ' fsmdmig' module 0x0000000000008000 logmask 0xffffffffffffffff
# Module ' fsmproxy' module 0x0000000000010000 logmask 0xffffffffffffffff
# Module ' fsmrtio' module 0x0000000000020000 logmask 0xffffffffffffffff
# Module ' fsmtoken' module 0x0000000000040000 logmask 0xffffffffffffffff
# Module ' fsmvfs' module 0x0000000000080000 logmask 0xffffffffffffffff
# Module ' fsmvnops' module 0x0000000000100000 logmask 0xffffffffffffffff
# Module ' memalloc' module 0x0000000000200000 logmask 0xffffffffffffffff
# Module ' proxy_con' module 0x0000000000400000 logmask 0xffffffffffffffff
# Module ' quotas' module 0x0000000000800000 logmask 0xffffffffffffffff
# Module ' recon' module 0x0000000001000000 logmask 0xffffffffffffffff
# Module ' rtio' module 0x0000000002000000 logmask 0xffffffffffffffff
# Module ' rwbuf' module 0x0000000004000000 logmask 0xffffffffffffffff
# Module ' rwproxy' module 0x0000000008000000 logmask 0xffffffffffffffff
# Module ' rwlock' module 0x0000000010000000 logmask 0xffffffffffffffff
# Module ' rw' module 0x0000000020000000 logmask 0xffffffffffffffff
# Module 'slidingbucket' module 0x0000000040000000 logmask 0xffffffffffffffff
# Module ' sockinput' module 0x0000000080000000 logmask 0xffffffffffffffff
# Module ' proxy_srv' module 0x0000000100000000 logmask 0xffffffffffffffff
# Module ' proxy_subr' module 0x0000000200000000 logmask 0xffffffffffffffff
# Module ' vfsops' module 0x0000000400000000 logmask 0xffffffffffffffff
# Module ' vnops' module 0x0000000800000000 logmask 0xffffffffffffffff
# Module ' perf' module 0x0000001000000000 logmask 0xffffffffffffffff
# Module ' md_cvdir' module 0x0000002000000000 logmask 0xffffffffffffffff
# Module ' md_cvsock' module 0x0000004000000000 logmask 0xffffffffffffffff
# Module ' md_cvsubr' module 0x0000008000000000 logmask 0xffffffffffffffff
# Module ' md_dmon' module 0x0000010000000000 logmask 0xffffffffffffffff
# Module ' md_fsmcom' module 0x0000020000000000 logmask 0xffffffffffffffff
# Module ' md_memalloc' module 0x0000040000000000 logmask 0xffffffffffffffff
# Module ' md_rwlock' module 0x0000080000000000 logmask 0xffffffffffffffff
# Module ' md_rw' module 0x0000100000000000 logmask 0xffffffffffffffff
# Module ' md_rwproxy' module 0x0000200000000000 logmask 0xffffffffffffffff
# Module ' md_socksubr' module 0x0000400000000000 logmask 0xffffffffffffffff
# Module ' md_vfsops' module 0x0000800000000000 logmask 0xffffffffffffffff
# Module ' md_vnops' module 0x0001000000000000 logmask 0xffffffffffffffff
# Module ' sh_cvsubr' module 0x0002000000000000 logmask 0xffffffffffffffff
# Module ' sh_fsmcom' module 0x0004000000000000 logmask 0xffffffffffffffff
# Module ' sh_sockinput' module 0x0008000000000000 logmask 0xffffffffffffffff
# Module ' sh_vnops' module 0x0010000000000000 logmask 0xffffffffffffffff
Seçilen modüller için izlemeyi etkinleştirmek için:
cvdbset md_vnops rw fsmvnops fsmtoken fsmdmig
# Çıktı:
# Setting md_vnops.
# Setting rw.
# Setting fsmvnops.
# Setting fsmtoken.
# Setting fsmdmig.
# cvdb -m modules=0x0001000020148000 logmask=0xffffffffffffffff
Bir argümanın önüne iki nokta üst üste (:) getirilirse, adı bu argümanı alt dize (substring) olarak içeren tüm modüller dahil edilir.
md_vnops izleme modülünü ve proxy ile ilgili tüm modülleri etkinleştirmek için:
cvdbset md_vnops :proxy
# Çıktı:
# Setting md_vnops.
# Setting proxy_clnt.
# Setting fsmproxy.
# Setting proxy_con.
# Setting rwproxy.
# Setting proxy_srv.
# Setting proxy_subr.
# Setting md_rwproxy.
# cvdb -m modules=0x0001200308410001 logmask=0xffffffffffffffff
rwbuf ve vnops modüllerini, cvENTRY ve cvEXIT izleme noktaları etkinleştirilmiş olarak mevcut izleme kümesine eklemek için:
cvdbset -t cvENTRY -t cvEXIT + rwbuf vnops
# Çıktı:
# Adding rwbuf.
# Adding vnops.
# cvdb -m modules=0x0000000804000000 logmask=0x0000000000000003
rwbuf ve vnops modüllerini mevcut izleme kümesinden kaldırmak için:
cvdbset - rwbuf vnops
# Çıktı:
# Clearing rwbuf.
# Clearing vnops.
# cvdb -m modules=0x0000000804000000 logmask=0x0000000000000000
Özel all modülü, tüm modülleri izlemeden eklemek veya kaldırmak için hem + hem de - seçenekleriyle kullanılabilir.
İzleme etkinleştirildikten sonra, izlemeyi almak için cvdbset -g kullanılabilir. İstenildiğinde, izlemeyi devre dışı bırakmak için cvdbset -d kullanılabilir.
İzlemenin daha da hassas kontrolü için çeşitli cvdb(8) komutları/seçenekleri kullanılabilir. Daha fazla ayrıntı için cvdb(8) sayfasına bakın.
I/O Performans Analizi
perf izleme modülü, I/O performansını analiz etmek için çok kullanışlıdır, örneğin:
cvdbset perf
Ardından cvdbset -g şu şekilde bilgi gösterecektir:
PERF: Device Write 41 MB/s IOs 2 exts 1 offs 0x0 len 0x400000 mics 95589 ino 0x5
PERF: VFS Write EofDmaAlgn 41 MB/s offs 0x0 len 0x400000 mics 95618 ino 0x5
PERF: Device: Aygıt I/O'su için ölçülen verimi (throughput) gösterir. Ayrıca, I/O'nun kaç parçaya bölündüğünü ve uzantı (extent) sayısını (ardışık dosya sistemi bloklarının dizisi) gösterir.PERF: VFS: Okuma veya yazma sistem çağrısı için ölçülen verimi ve aşağıdakiler dahil olmak üzere I/O'nun önemli yönlerini gösterir:Dma- DMABuf- Tamponlu (Buffered)Eof- Dosya genişletildi (File extended)Algn- Düzgün biçimlendirilmiş DMA I/OShr- Dosya başka bir istemci tarafından paylaşılıyorRt- Dosya gerçek zamanlı (real time)Zr- Dosyadaki boşluk (hole) sıfırlandı
Her iki izleme de dosya ofsetini, I/O boyutunu, gecikme süresini (mics) ve inode numarasını raporlar.
Örnek Kullanım Durumları
- I/O özelliklerinin beklendiği gibi olduğunu doğrulayın: VFS izlemesi, görüntülenen özelliklerin beklentilerle uyumlu olmasını sağlamak için kullanılabilir, örneğin; düzgün biçimlendirilmiş, tamponlu veya DMA, paylaşılan/paylaşılmayan veya I/O boyutu. Küçük bir I/O işlemi DMA ile gerçekleştiriliyorsa performans zayıf olacaktır. DMA I/O düzgün biçimlendirilmemişse, ekstra bir veri kopyalaması gerektirir ve hatta küçük parçalara bölünebilir. Dosyalardaki boşlukların sıfırlanmasının performans üzerinde etkisi vardır.
- Meta veri işlemlerinin performansı etkileyip etkilemediğini belirleyin:
VFS verimi tutarsızsa veya Aygıt (Device) veriminden önemli ölçüde düşükse, bunun nedeni meta veri işlemleri olabilir. Bu durumda,
perfizlemesine ek olarakfsmtoken,fsmvnopsvefsmdmigizlemelerini görüntülemek yararlı olacaktır. - Disk performans sorunlarını tespit edin: Aygıt (Device) verimi tutarsızsa veya beklenenden azsa, bu durum bir depolama havuzundaki yavaş bir diski veya RAID ayarlamasının gerekli olduğunu gösterebilir.
- Dosya parçalanmasını (fragmentation) tespit edin:
Uzantı sayısı olan
extsyüksekse, bu durum bir parçalanma sorununa işaret edebilir. Bu, aygıt I/O'larının daha küçük parçalara bölünmesine neden olur ve verimi önemli ölçüde etkileyebilir. - Okuma/değiştirme/yazma (read/modify/write) durumunu tespit edin:
Tamponlu VFS yazmaları Aygıt (Device) okumalarına neden oluyorsa, I/O istek boyutunu
cachebufsizedeğerinin bir katıyla (varsayılan 256KB veya 1024K, bkz. mount_acfs(8)) eşleştirmek faydalı olabilir. Bunu önlemenin bir başka yolu da yazmadan önce dosyayı kırpmaktır (truncate).