Meningkatkan kepadatan kontainer pada sebuah node menggunakan teknologi PFCACHE

Meningkatkan kepadatan kontainer pada sebuah node menggunakan teknologi PFCACHE

Salah satu tujuan penyedia hosting adalah memaksimalkan pemanfaatan peralatan yang ada guna memberikan layanan berkualitas tinggi kepada pengguna akhir. Sumber daya server akhir selalu terbatas, namun jumlah layanan klien yang dihosting, dan dalam kasus kita, kita berbicara tentang VPS, dapat berbeda secara signifikan. Baca tentang cara memanjat pohon dan memakan burger yang sudah dipotong.

Memadat VPS pada sebuah node sedemikian rupa sehingga klien tidak merasakannya sama sekali sangat membantu meningkatkan kinerja ekonomi penyedia hosting mana pun. Tentu saja, sebuah node tidak boleh pecah jika penuh dengan kontainer, dan setiap lonjakan beban akan segera dirasakan oleh semua klien.

Berapa banyak VPS yang dapat dihosting di satu node bergantung pada banyak faktor, seperti:

1. Karakteristik perangkat keras dari node itu sendiri
2. Ukuran VPS
3. Sifat beban pada VPS
4. Teknologi perangkat lunak yang membantu mengoptimalkan kepadatan

Dalam hal ini, kami akan berbagi pengalaman kami menggunakan teknologi Pfcache untuk Virtuozzo.
Kami menggunakan cabang ke-6, tetapi semua yang dikatakan juga berlaku untuk cabang ke-7.

cache pf – mekanisme Virtuozzo yang membantu menghapus duplikat IOPS dan RAM dalam container, mengalokasikan file identik dalam container ke area umum terpisah.

Sebenarnya terdiri dari:
1. Kode inti
2. Setan ruang pengguna
3. Utilitas ruang pengguna

Di sisi node, kami mengalokasikan seluruh bagian di mana file akan dibuat yang akan langsung digunakan oleh semua VPS di node. Perangkat blok ploop dipasang di bagian ini. Kemudian, saat container dimulai, container menerima referensi untuk bagian ini:

[root@pcs13 ~]# cat /proc/mounts
...
/dev/ploop62124p1 /vz/pfcache ext4 rw,relatime,barrier=1,data=ordered,balloon_ino=12 0 0
...
/dev/ploop22927p1 /vz/root/418 ext4 rw,relatime,barrier=1,data=ordered,balloon_ino=12,pfcache_csum,pfcache=/vz/pfcache 0 0
/dev/ploop29642p1 /vz/root/264 ext4 rw,relatime,barrier=1,data=ordered,balloon_ino=12,pfcache_csum,pfcache=/vz/pfcache 0 0
...

Berikut adalah perkiraan statistik jumlah file di salah satu node kami:

[root@pcs13 ~]# find /vz/pfcache -type f | wc -l
45851
[root@pcs13 ~]# du -sck -h /vz/pfcache
2.4G    /vz/pfcache
2.4G    total

Prinsip pfcache adalah sebagai berikut:
β€’ Daemon ruang pengguna Pfcached menulis hash sha-1 dari file ke atribut xattr dari file ini. Tidak semua file diproses, tetapi hanya di direktori /usr, /bin, /usr/sbin, /sbin, /lib, /lib64

β€’ Kemungkinan besar file dalam direktori ini akan β€œdibagikan” dan akan digunakan oleh beberapa container;

β€’ Pfcached secara berkala mengumpulkan statistik pembacaan file dari kernel, menganalisisnya, dan menambahkan file ke cache jika sering digunakan;

β€’ Direktori ini mungkin berbeda dan dikonfigurasi dalam file konfigurasi.

β€’ Saat membaca file, diperiksa apakah file tersebut berisi hash yang ditentukan dalam atribut xattr extended. Jika berisi, file "umum" dibuka, bukan file kontainer. Substitusi ini terjadi tanpa diketahui oleh kode container dan disembunyikan di dalam kernel;

β€’ Saat menulis ke file, hash tidak valid. Jadi, saat Anda membukanya lagi, file container itu sendiri yang akan dibuka, dan bukan cache-nya.

Dengan menyimpan file bersama dari /vz/pfcache di cache halaman, kami mencapai penghematan dalam cache itu sendiri, serta penghematan dalam IOPS. Daripada membaca sepuluh file dari disk, kami membaca satu, yang langsung masuk ke cache halaman.

struct inode {
...
 struct file             *i_peer_file;
...
};
struct address_space {
...
 struct list_head        i_peer_list;
...
}

Daftar VMA untuk file tetap tunggal (kami menghapus duplikat memori) dan lebih jarang dibaca dari disk (menghemat iops). Dana bersama kami terletak di SSD - peningkatan kecepatan tambahan.

Contoh untuk menyimpan file /bin/bash:

[root@pcs13 ~]# ls -li /vz/root/2388/bin/bash
524650 -rwxr-xr-x 1 root root 1021112 Oct  7  2018 /vz/root/2388/bin/bash
[root@pcs13 ~]# pfcache dump /vz/root/2388 | grep 524650
8e3aa19fdc42e87659746f6dc8ea3af74ab30362 i:524650      g:1357611108  f:CP
[root@pcs13 ~]# sha1sum /vz/root/2388/bin/bash
8e3aa19fdc42e87659746f6dc8ea3af74ab30362  /vz/root/2388/bin/bash
[root@pcs13 /]# getfattr -ntrusted.pfcache /vz/root/2388/bin/bash
# file: vz/root/2388/bin/bash
trusted.pfcache="8e3aa19fdc42e87659746f6dc8ea3af74ab30362"
[root@pcs13 ~]# sha1sum /vz/pfcache/8e/3aa19fdc42e87659746f6dc8ea3af74ab30362
8e3aa19fdc42e87659746f6dc8ea3af74ab30362  /vz/pfcache/8e/3aa19fdc42e87659746f6dc8ea3af74ab30362

Kami menghitung efisiensi penggunaan naskah yang sudah jadi.

Skrip ini menelusuri semua container di node, menghitung file cache dari setiap container.

[root@pcs16 ~]# /pcs/distr/pfcache-examine.pl
...
Pfcache cache uses 831 MB of memory
Total use of pfcached files in containers is 39837 MB of memory
Pfcache effectiveness: 39006 MB

Jadi, dari memori kami menyimpan sekitar 40 gigabyte file dalam wadah, mereka akan dimuat dari cache.

Agar mekanisme ini dapat bekerja lebih baik lagi, VPS yang paling β€œidentik” perlu ditempatkan pada node. Misalnya, pengguna yang tidak memiliki akses root dan lingkungan dari gambar yang diterapkan dikonfigurasi.

Anda dapat menyetel pfcache melalui file konfigurasi
/etc/vz/pfcache.conf

MINSIZE, MAXSIZE – ukuran file minimum/maksimum untuk caching
TIMEOUT – batas waktu antara upaya cache

Anda dapat melihat daftar lengkap parameter ΠΏΠΎ ссылкС.

Sumber: www.habr.com

Tambah komentar