PFCACHEテクノロジーを使用して、ノード上のコンテナー密度を高める





ホスティングプロバイダーの目標の1つは、エンドユーザーに質の高いサービスを提供するために、既存の機器を最大限に廃棄することです。 エンドサーバーのリソースは常に制限されていますが、ホストされているクライアントサービスの数、および私たちの場合はVPSについて話しているが、大幅に異なる場合があります。 クリスマスツリーに乗ってハンバーガーを食べる方法を読んで、猫の下で読んでください。



クライアントがこれをまったく感じないようにノードにVPSを統合すると、ホスティングプロバイダーの経済的パフォーマンスを大幅に向上させるのに役立ちます。 もちろん、コンテナが眼球に詰め込まれている場合、ノードは継ぎ目で破裂してはならず、すべてのクライアントはすぐに負荷の急増を感じます。



1つのノードに配置できるVPSの数は、次のような多くの要因に依存します。



  1. 鉄そのものの特徴
  2. VPSサイズ
  3. VPS負荷パターン
  4. 密度の最適化に役立つソフトウェアテクノロジー


この場合、VirtuozzoでPfcacheテクノロジーを使用した経験を共有します。

6番目のブランチを使用しますが、7番目のブランチについても同様です。



PfcacheはVirtuozzoのメカニズムで、コンテナ内のIOPSとRAMを重複排除し、コンテナ内の同じファイルを個別の共通ゾーンに割り当てます。



実際、次のもので構成されています。



  1. カーネルコード
  2. ユーザースペースデーモン
  3. ユーザースペースユーティリティ


ノード側では、ノード上のすべての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の原理は次のとおりです。





ページキャッシュで/ 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-キャッシングの最小/最大ファイルサイズ

タイムアウト-キャッシュ試行間のタイムアウト



パラメータの完全なリストはリンクで見つけることができます。



All Articles