
Salah satu tujuan penyedia hosting adalah pembuangan peralatan yang ada semaksimal mungkin untuk memberikan layanan berkualitas kepada pengguna akhir. Sumber daya dari server akhir selalu terbatas, namun, jumlah layanan klien yang dihosting, dan dalam kasus kami, kami berbicara tentang VPS, dapat sangat bervariasi. Baca tentang cara mendapatkan pohon Natal dan makan burger di bawah kucing.
Mengkonsolidasikan VPS pada sebuah node sedemikian rupa sehingga klien tidak merasa ini sama sekali membantu banyak untuk meningkatkan kinerja ekonomi penyedia hosting. Tentu saja, sebuah simpul tidak boleh retak pada lapisan jika kontainer dijejalkan ke bola mata, dan semua klien segera merasakan adanya lonjakan beban.
Berapa banyak VPS dapat ditempatkan pada satu node tergantung pada banyak faktor, seperti jelas:- Karakteristik besi dari simpul itu sendiri
- Ukuran VPS
- Pola pemuatan VPS
- Teknologi Perangkat Lunak Yang Membantu Mengoptimalkan Kepadatan
Dalam hal ini, kami akan membagikan pengalaman kami menggunakan teknologi Pfcache untuk Virtuozzo.
Kami menggunakan cabang ke-6, tetapi semua yang dikatakan benar untuk cabang ke-7.
Pfcache adalah mekanisme Virtuozzo yang membantu menduplikasi IOPS dan RAM dalam wadah, mengalokasikan file yang sama dalam wadah ke zona bersama yang terpisah.
Bahkan, itu terdiri dari:- Kode kernel
- Daemon ruang pengguna
- Utilitas ruang pengguna
Di sisi simpul, kami menyoroti seluruh bagian di mana file akan dibuat bahwa semua VPS pada node akan langsung digunakan. Perangkat ploop block sudah terpasang di bagian ini. Selanjutnya, pada awal wadah, menerima referensi ke 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 ini contoh statistik jumlah file pada 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 menentukan hash sha-1 file dalam atribut xattr dari file ini. File tidak diproses semua, tetapi hanya di direktori / usr, / bin, / usr / sbin, / sbin, / lib, / lib64
- Kemungkinan besar file dalam direktori ini akan "dibagikan" dan akan digunakan oleh beberapa kontainer;
- Pfcached secara berkala mengumpulkan statistik tentang membaca file dari kernel, menganalisisnya, dan menambahkan file ke cache jika penggunaannya sering;
- Direktori ini mungkin berbeda, dan dikonfigurasikan dalam file konfigurasi.
- Saat membaca file, diperiksa apakah berisi hash yang ditentukan dalam atribut xattr yang diperluas. Jika berisi, file "umum" dibuka, bukan file kontainer. Substitusi ini terjadi tanpa disadari oleh kode kontainer, dan bersembunyi di kernel;
- Saat menulis ke file, hash tidak valid. Dengan demikian, pada pembukaan berikutnya, file kontainer akan dibuka langsung, dan bukan cache-nya.
Dengan menyimpan file yang dibagikan dalam cache halaman dari / vz / pfcache, kami menyimpan cache ini dan juga menyimpan IOPS. Alih-alih membaca sepuluh file dari disk, kami membaca file 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 sama (memori deduplicate) dan lebih jarang membaca dari disk (save iops). "Dana bersama" kami di-host di SSD - keuntungan tambahan dalam kecepatan.
Contoh untuk caching 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 dengan
skrip yang sudah jadi .
Script ini melewati semua kontainer pada node, menghitung file cache dari masing-masing 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, kami menyimpan sekitar 40 gigabytes file dalam wadah dari memori, mereka akan dimuat dari cache.
Agar mekanisme ini bekerja lebih baik, perlu untuk menempatkan VPS "identik" maksimum pada node. Sebagai contoh, mereka yang pengguna tidak memiliki akses root dan di mana lingkungan dari gambar diperluas dikonfigurasi.
Anda dapat mengatur operasi pfcache melalui file konfigurasi
/etc/vz/pfcache.conf
MINSIZE, MAXSIZE - ukuran file minimum / maksimum untuk caching
TIMEOUT - batas waktu antara upaya cache
Daftar parameter lengkap dapat ditemukan
di tautan .