Ceph
- Benchmark Ceph Cluster Performance-performanța clusterului Ceph-Ceph-Ceph
- obțineți statistici de performanță de bază
- Benchmark discurile dvs. Utilizați următoarea comandă pentru a citi și scrie un fișier, amintindu-vă să adăugați parametrul oflag pentru a ocoli memoria cache a paginii discului:shell> dd if=/dev/zero of=here bs=1G count=1 oflag=direct
- Benchmark rețeaua dvs. Un instrument bun pentru acest lucru este iperf, care utilizează o conexiune client-server pentru a măsura lățimea de bandă TCP și UDP.
- Benchmark un cluster de stocare Ceph (Ceph Storage Cluster)
- Benchmark a Ceph block Device XV
- Benchmark a Ceph Object Gateway (Gateway obiect Ceph)
- concluzie
Benchmark Ceph Cluster Performance-performanța clusterului Ceph-Ceph-Ceph
una dintre cele mai frecvente întrebări pe care le auzim este “Cum verific dacă clusterul meu rulează la performanțe maxime?”. Nu vă mai mirați – în acest ghid, vă vom prezenta câteva instrumente pe care le puteți utiliza pentru a vă compara Clusterul Ceph.
notă: ideile din acest articol se bazează pe postarea de pe blogul lui Sebastian Han, postarea de pe blogul TelekomCloud și intrările dezvoltatorilor și inginerilor Ceph.
obțineți statistici de performanță de bază
fundamental, benchmarking este totul despre comparație. Nu veți ști dacă clusterul Ceph are performanțe sub par, cu excepția cazului în care identificați mai întâi care este performanța sa maximă posibilă. Deci, înainte de a începe evaluarea comparativă a clusterului, trebuie să obțineți statistici de performanță de bază pentru cele două componente principale ale infrastructurii Ceph: discurile și rețeaua.
Benchmark discurile dvs. Utilizați următoarea comandă pentru a citi și scrie un fișier, amintindu-vă să adăugați parametrul oflag pentru a ocoli memoria cache a paginii discului:
shell> dd if=/dev/zero of=here bs=1G count=1 oflag=direct
rețineți ultima statistică furnizată, care indică performanța discului în MB / sec. efectuați acest test pentru fiecare disc din cluster, notând rezultatele.
Benchmark rețeaua dvs. Un instrument bun pentru acest lucru este iperf, care utilizează o conexiune client-server pentru a măsura lățimea de bandă TCP și UDP.
puteți instala iperf folosind apt-get install iperf sau yum install iperf.
iperf trebuie să fie instalat pe cel puțin două noduri din cluster. Apoi, pe unul dintre noduri, porniți serverul iperf folosind următoarea comandă:
shell> iperf -s
pe un alt nod, porniți clientul cu următoarea comandă, amintindu-vă să utilizați adresa IP a nodului care găzduiește serverul iperf:
shell> iperf -c 192.168.1.1
rețineți statistica lățimii de bandă în Mbits/sec, deoarece aceasta indică debitul maxim acceptat de rețeaua dvs.
acum că aveți câteva numere de referință, puteți începe să faceți benchmarking cu Clusterul Ceph pentru a vedea dacă vă oferă performanțe similare. Benchmarking-ul poate fi efectuat la diferite niveluri: puteți efectua benchmarking la nivel scăzut al clusterului de stocare în sine sau puteți efectua benchmarking la nivel superior al interfețelor cheie, cum ar fi dispozitivele bloc și gateway-urile de obiecte. Următoarele secțiuni discută fiecare dintre aceste abordări.
notă: înainte de a rula oricare dintre reperele din secțiunile ulterioare, aruncați toate cache-urile folosind o comandă ca aceasta:shell> sudo echo 3 | sudo tee /proc/sys/vm/drop_caches && sudo sync
Benchmark un cluster de stocare Ceph (Ceph Storage Cluster)
Ceph include comanda Rados bench, concepută special pentru a compara un cluster de stocare RADOS. Pentru a-l utiliza, creați un bazin de stocare și apoi utilizați rados bench pentru a efectua un punct de referință de scriere, așa cum se arată mai jos.
comanda rados este inclusă în Ceph.
shell> ceph osd pool create scbench 128 128
shell> rados bench -p scbench 10 write --no-cleanup
acest lucru creează un nou pool numit ‘scbench’ și apoi efectuează un punct de referință de scriere timp de 10 secunde. Observați opțiunea — no-cleanup, care lasă în urmă unele date. Ieșirea vă oferă un bun indicator al cât de repede clusterul dvs. poate scrie date.
sunt disponibile două tipuri de repere de citire: seq pentru citiri secvențiale și rand pentru citiri aleatorii. Pentru a efectua o referință de citire, utilizați comenzile de mai jos:shell> rados bench -p scbench 10 seq
shell> rados bench -p scbench 10 rand
de asemenea, puteți adăuga parametrul-t pentru a crește concurența de citire și scriere (implicit la 16 fire) sau parametrul-b pentru a modifica dimensiunea obiectului scris (implicit la 4 MB). De asemenea, este o idee bună să rulați mai multe copii ale acestui benchmark în diferite bazine, pentru a vedea cum se schimbă performanța cu mai mulți clienți.
odată ce aveți datele, puteți începe să comparați statisticile de citire și scriere ale clusterului cu valorile de referință numai pe disc efectuate anterior, să identificați cât de mult există un decalaj de performanță (dacă există) și să începeți să căutați motive.
puteți curăța datele de referință lăsate în urmă de benchmark-ul de scriere cu această comandă:
shell> rados -p scbench cleanup
Benchmark a Ceph block Device XV
dacă sunteți un fan al dispozitivelor Ceph block, există două instrumente pe care le puteți utiliza pentru a evalua performanța acestora. Ceph include deja comanda RBD bench, dar puteți utiliza și popularul instrument de benchmarking i/O fio, care vine acum cu suport încorporat pentru dispozitivele bloc RADOS.
comanda rbd este inclusă în Ceph. Suportul RBD în fio este relativ nou, prin urmare va trebui să îl descărcați din depozitul său și apoi să îl compilați și să îl instalați utilizând_ configure && make && make install_. Rețineți că trebuie să instalați pachetul de dezvoltare librbd-dev cu apt-get install librbd-dev sau yum install librbd-dev înainte de a compila fio pentru a activa suportul RBD.
înainte de a utiliza oricare dintre aceste două instrumente, totuși, creați un dispozitiv bloc folosind comenzile de mai jos:shell> ceph osd pool create rbdbench 128 128
shell> rbd create image01 --size 1024 --pool rbdbench
shell> sudo rbd map image01 --pool rbdbench --name client.admin
shell> sudo /sbin/mkfs.ext4 -m0 /dev/rbd/rbdbench/image01
shell> sudo mkdir /mnt/ceph-block-device
shell> sudo mount /dev/rbd/rbdbench/image01 /mnt/ceph-block-device
comanda RBD bench-write generează o serie de scrieri secvențiale la imagine și măsoară debitul de scriere și latența. Iată un exemplu:
shell> rbd bench-write image01 --pool=rbdbench
sau, puteți utiliza fio pentru a compara dispozitivul bloc. Un exemplu rbd.șablonul fio este inclus cu codul sursă fio, care efectuează un test de scriere aleatorie 4K împotriva unui dispozitiv bloc RADOS prin librbd. Rețineți că va trebui să actualizați șablonul cu numele corecte pentru piscina și dispozitivul dvs., așa cum se arată mai jos.
ioengine=rbd
clientname=admin
pool=rbdbench
rbdname=image01
rw=randwrite
bs=4k
iodepth=32
apoi, executați fio după cum urmează:shell> fio examples/rbd.fio
Benchmark a Ceph Object Gateway (Gateway obiect Ceph)
când vine vorba de benchmarking-ul Ceph object gateway, nu căutați mai departe de swift-bench, instrumentul de benchmarking inclus cu OpenStack Swift. Instrumentul swift-bench testează performanța clusterului Ceph prin simularea solicitărilor clientului PUT și GET și măsurarea performanței acestora.
puteți instala swift-bench folosind pip install swift& & pip install swift-bench.
pentru a utiliza swift-bench, trebuie să creați mai întâi un utilizator gateway și subuser, așa cum se arată mai jos:shell> sudo radosgw-admin user create --uid="benchmark" --display-name="benchmark"
shell> sudo radosgw-admin subuser create --uid=benchmark --subuser=benchmark:swift
--access=full
shell> sudo radosgw-admin key create --subuser=benchmark:swift --key-type=swift
--secret=guessme
shell> radosgw-admin user modify --uid=benchmark --max-buckets=0
apoi, creați un fișier de configurare pentru swift-bench pe o gazdă client, ca mai jos. Nu uitați să actualizați adresa URL de autentificare pentru a o reflecta pe cea a gateway-ului obiectului Ceph și pentru a utiliza numele de utilizator și acreditările corecte.
auth = http://gateway-node/auth/v1.0
user = benchmark:swift
key = guessme
auth_version = 1.0
acum Puteți rula un punct de referință ca mai jos. Utilizați parametrul-c pentru a regla numărul de conexiuni concurente (acest exemplu utilizează 64) și parametrul-s pentru a regla dimensiunea obiectului scris (acest exemplu utilizează obiecte 4k). Parametrii-n și-g controlează numărul de obiecte de pus și de obținut.shell> swift-bench -c 64 -s 4096 -n 1000 -g 100 /tmp/swift.conf
deși swift-bench măsoară performanța în număr de obiecte / sec, este destul de ușor să convertiți acest lucru în MB/sec, înmulțind cu dimensiunea fiecărui obiect. Cu toate acestea, ar trebui să aveți grijă să comparați acest lucru direct cu statisticile de performanță ale discului de bază pe care le-ați obținut mai devreme, deoarece o serie de alți factori influențează, de asemenea, aceste statistici, cum ar fi:
- nivelul de replicare (și latența generală)
- scrie jurnalul de date complete (compensat în unele situații prin coalescența datelor jurnalului)
- fsync pe OSDs pentru a garanta siguranța datelor
- metadate generale pentru păstrarea datelor Rados
- latență aeriene (rețea, Ceph, etc) face readahead mai important
sfat: Când vine vorba de object gateway performance, nu există o regulă dură și rapidă pe care să o puteți utiliza pentru a îmbunătăți cu ușurință performanța. În unele cazuri, inginerii Ceph au reușit să obțină performanțe mai bune decât cele de bază folosind strategii inteligente de cache și coalescență, în timp ce în alte cazuri, performanța object gateway a fost mai mică decât performanța discului datorită latenței, fsync și metadatelor aeriene.
concluzie
există o serie de instrumente disponibile pentru a compara un cluster Ceph, la diferite niveluri: disc, rețea, cluster, dispozitiv și gateway. Acum ar trebui să aveți o perspectivă asupra modului de abordare a procesului de benchmarking și să începeți să generați date de performanță pentru clusterul dvs. Mult noroc!