ホスティングプロバイダーの目標の1つは、エンドユーザーに質の高いサービスを提供するために、既存の機器を最大限に廃棄することです。 エンドサーバーのリソースは常に制限されていますが、ホストされているクライアントサービスの数、および私たちの場合はVPSについて話しているが、大幅に異なる場合があります。 クリスマスツリーに乗ってハンバーガーを食べる方法を読んで、猫の下で読んでください。
クライアントがこれをまったく感じないようにノードにVPSを統合すると、ホスティングプロバイダーの経済的パフォーマンスを大幅に向上させるのに役立ちます。 もちろん、コンテナが眼球に詰め込まれている場合、ノードは継ぎ目で破裂してはならず、すべてのクライアントはすぐに負荷の急増を感じます。
1つのノードに配置できるVPSの数は、次のような多くの要因に依存します。- 鉄そのものの特徴
- VPSサイズ
- VPS負荷パターン
- 密度の最適化に役立つソフトウェアテクノロジー
この場合、VirtuozzoでPfcacheテクノロジーを使用した経験を共有します。
6番目のブランチを使用しますが、7番目のブランチについても同様です。
PfcacheはVirtuozzoのメカニズムで、コンテナ内のIOPSとRAMを重複排除し、コンテナ内の同じファイルを個別の共通ゾーンに割り当てます。
実際、次のもので構成されています。- カーネルコード
- ユーザースペースデーモン
- ユーザースペースユーティリティ
ノード側では、ノード上のすべてのVPSが直接使用するファイルが作成されるセクション全体を強調表示します。 このセクションでは、ploopブロックデバイスをマウントします。 さらに、コンテナが起動すると、このセクションへの参照を受け取ります。
[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 ...
ノードの1つにあるファイルの数に関するサンプル統計は次のとおりです。
[root@pcs13 ~]# find /vz/pfcache -type f | wc -l 45851 [root@pcs13 ~]# du -sck -h /vz/pfcache 2.4G /vz/pfcache 2.4G total
pfcacheの原理は次のとおりです。- ユーザースペースのPfcachedデーモンは、ファイルのsha-1ハッシュを指定されたファイルのxattr属性に書き込みます。 ファイルはすべて処理されませんが、ディレクトリ/ usr、/ bin、/ usr / sbin、/ sbin、/ lib、/ lib64でのみ処理されます
- ほとんどの場合、これらのディレクトリ内のファイルは「共有」され、複数のコンテナで使用されます。
- Pfcachedは、カーネルからのファイルの読み取りに関する統計を定期的に収集して分析し、使用頻度が高い場合はキャッシュにファイルを追加します。
- これらのディレクトリは異なる場合があり、構成ファイルで構成されます。
- ファイルを読み取るとき、拡張xattr属性に指定されたハッシュが含まれているかどうかがチェックされます。 含まれている場合、コンテナファイルの代わりに「共通」ファイルが開きます。 この置換は、コンテナコードに気付かれずに発生し、カーネルに隠されます。
- ファイルに書き込むとき、ハッシュは無効になります。 したがって、次回のオープン時に、コンテナファイルはキャッシュではなく直接開かれます。
ページキャッシュで/ vz / pfcacheの共有ファイルを保持することにより、IOPSを保存するだけでなく、このキャッシュも保存します。ディスクから10個のファイルを読み取る代わりに、ページキャッシュに直接移動するファイルを読み取ります。
struct inode { ... struct file *i_peer_file; ... }; struct address_space { ... struct list_head i_peer_list; ... }
ファイルのVMAリストは同じままで(メモリの重複排除)、ディスクからの読み取り頻度は低くなります(iopsの保存)。 私たちの「共通の資金」はSSDでホストされ、速度がさらに向上します。
ファイル/ 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
既製のスクリプトを使用して使用効率を計算し
ます 。
このスクリプトはノード上のすべてのコンテナを通過し、各コンテナのキャッシュファイルを計算します。
[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
したがって、コンテナから約40ギガバイトのファイルをメモリから保存し、キャッシュからロードします。
このメカニズムをさらに機能させるには、ノードに最大の「同一の」VPSを配置する必要があります。 たとえば、ユーザーにルートアクセス権がなく、展開されたイメージの環境が構成されているものなど。
構成ファイルを使用してpfcache操作を調整できます
/etc/vz/pfcache.conf
MINSIZE、MAXSIZE-キャッシングの最小/最大ファイルサイズ
タイムアウト-キャッシュ試行間のタイムアウト
パラメータの完全なリストは
リンクで見つけることができます。