การเพิ่มความหนาแน่นของคอนเทนเนอร์บนโหนดโดยใช้เทคโนโลยี PFCACHE

การเพิ่มความหนาแน่นของคอนเทนเนอร์บนโหนดโดยใช้เทคโนโลยี PFCACHE

เป้าหมายประการหนึ่งของผู้ให้บริการโฮสติ้งคือการใช้อุปกรณ์ที่มีอยู่ให้เกิดประโยชน์สูงสุดเพื่อให้บริการคุณภาพสูงแก่ผู้ใช้ปลายทาง ทรัพยากรของเซิร์ฟเวอร์ปลายทางนั้นมีจำกัดอยู่เสมอ แต่จำนวนบริการไคลเอ็นต์ที่โฮสต์ และในกรณีของเราที่เรากำลังพูดถึง VPS อาจแตกต่างกันอย่างมาก อ่านวิธีปีนต้นไม้และกินเบอร์เกอร์แบบผ่า

การกระชับ VPS บนโหนดในลักษณะที่ลูกค้าไม่รู้สึกว่ามันช่วยเพิ่มประสิทธิภาพทางเศรษฐกิจของผู้ให้บริการโฮสติ้งได้อย่างมาก แน่นอนว่าโหนดไม่ควรแตกที่ตะเข็บหากมีการอัดแน่นไปด้วยภาชนะ และลูกค้าทุกคนจะรู้สึกได้ถึงภาระที่เพิ่มขึ้นทันที

จำนวน VPS ที่สามารถโฮสต์บนโหนดเดียวนั้นขึ้นอยู่กับหลายปัจจัย เช่นปัจจัยที่ชัดเจน เช่น:

1. ลักษณะของฮาร์ดแวร์ของโหนดนั้นเอง
2. ขนาด VPS
3. ลักษณะของโหลดบน VPS
4. เทคโนโลยีซอฟต์แวร์ที่ช่วยเพิ่มประสิทธิภาพความหนาแน่น

ในกรณีนี้ เราจะแบ่งปันประสบการณ์ของเราในการใช้เทคโนโลยี Pfcache สำหรับ Virtuozzo
เราใช้สาขาที่ 6 แต่ทุกอย่างที่กล่าวมาก็เป็นจริงสำหรับสาขาที่ 7 ด้วย

พีเอฟซีแคช – กลไก 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
...

ต่อไปนี้เป็นสถิติโดยประมาณเกี่ยวกับจำนวนไฟล์บนหนึ่งในโหนดของเรา:

[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 มีดังนี้:
• daemon พื้นที่ผู้ใช้ Pfcached เขียนแฮช sha-1 ของไฟล์ไปยังแอตทริบิวต์ xattr ของไฟล์นี้ ไม่ใช่ทุกไฟล์ที่ได้รับการประมวลผล แต่เฉพาะในไดเร็กทอรี /usr, /bin, /usr/sbin, /sbin, /lib, /lib64

• เป็นไปได้มากว่าไฟล์ในไดเร็กทอรีเหล่านี้จะถูก "แชร์" และจะถูกใช้งานโดยคอนเทนเนอร์หลายตัว;

• Pfcached รวบรวมสถิติเกี่ยวกับการอ่านไฟล์จากเคอร์เนลเป็นระยะ วิเคราะห์ และเพิ่มไฟล์ลงในแคชหากมีการใช้งานบ่อยครั้ง

• ไดเร็กทอรีเหล่านี้อาจแตกต่างกันและได้รับการกำหนดค่าในไฟล์คอนฟิกูเรชัน

• เมื่ออ่านไฟล์ จะมีการตรวจสอบว่ามีแฮชที่ระบุในแอตทริบิวต์เพิ่มเติมของ xattr หรือไม่ หากมี ไฟล์ "ทั่วไป" จะถูกเปิดแทนไฟล์คอนเทนเนอร์ การทดแทนนี้เกิดขึ้นโดยไม่มีใครสังเกตเห็นโดยรหัสคอนเทนเนอร์และถูกซ่อนอยู่ในเคอร์เนล

• เมื่อเขียนลงไฟล์ แฮชจะไม่ถูกต้อง ดังนั้นในครั้งต่อไปที่คุณเปิดไฟล์คอนเทนเนอร์จะถูกเปิด ไม่ใช่แคช

ด้วยการเก็บไฟล์ที่แชร์จาก /vz/pfcache ไว้ในแคชของเพจ เราจึงประหยัดในแคชนี้ได้เช่นเดียวกับประหยัดใน IOPS แทนที่จะอ่านสิบไฟล์จากดิสก์ เราอ่านหนึ่งไฟล์ ซึ่งจะไปที่แคชของเพจทันที

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 - ขนาดไฟล์ขั้นต่ำ/สูงสุดสำหรับการแคช
TIMEOUT - หมดเวลาระหว่างความพยายามในการแคช

คุณสามารถดูรายการพารามิเตอร์ทั้งหมดได้ ลิงค์.

ที่มา: will.com

เพิ่มความคิดเห็น