ClamAV เก็บสตริงการค้นหาโดยใช้สตริงคลาสสิก (Boyer Moore) และอัลกอริธึมการแสดงออกปกติ (Aho Corasick) เป็นอัลกอริทึมจากปี 1970 พวกเขามีประสิทธิภาพหน่วยความจำอย่างกว้างขวาง
ปัญหาคือจำนวนลายเซ็นของไวรัสจำนวนมาก สิ่งนี้นำไปสู่โครงสร้างข้อมูลของอัลกอริทึมที่เติบโตค่อนข้างใหญ่
คุณไม่สามารถส่งโครงสร้างข้อมูลเหล่านั้นเพื่อแลกเปลี่ยนเนื่องจากไม่มีส่วนใดของโครงสร้างข้อมูลของอัลกอริทึมที่เข้าถึงน้อยกว่าส่วนอื่น ๆ หากคุณบังคับให้เพจของพวกเขาสลับดิสก์จากนั้นพวกเขาจะถูกอ้างอิงช่วงเวลาต่อมาและเพียงแค่สลับกลับเข้ามาอีกครั้ง (ในทางเทคนิคแล้วเราพูดว่า "การเข้าถึงแบบสุ่มของโครงสร้างข้อมูลจะบังคับให้โครงสร้างข้อมูลทั้งหมดอยู่ใน ".)
โครงสร้างข้อมูลมีความจำเป็นหากคุณกำลังสแกนจากบรรทัดคำสั่งหรือสแกนจากภูต
คุณไม่สามารถใช้ลายเซ็นไวรัสเพียงบางส่วนได้เนื่องจากคุณไม่ได้เลือกว่าจะส่งไวรัสชนิดใดและดังนั้นจึงไม่สามารถบอกได้ว่าคุณต้องการลายเซ็นใด
นี่คือหน่วยความจำที่ใช้กับเครื่อง 32- บิตที่เรียกใช้ Debian Wheezy และมันคือ clamd
# ps_mem.py
Private + Shared = RAM used Program
281.7 MiB + 422.5 KiB = 282.1 MiB clamd
แก้ไข: ฉันเห็นบางคนแนะนำให้ตั้งค่าขนาดชุดที่อยู่อาศัย หากสิ่งนี้สำเร็จแล้วการมีขนาดชุดที่อยู่อาศัยน้อยกว่าขนาดชุดการทำงานจะนำไปสู่กระบวนการที่สลับไปมาระหว่างและสลับ สิ่งนี้จะลดประสิทธิภาพของระบบทั้งหมดลงอย่างมาก ในกรณีใด ๆ หน้าคู่มือ Linux สำหรับ setrlimit (RLIMIT_RSS, ... ) กล่าวว่าการตั้งค่าขนาดชุดที่อยู่อาศัยไม่ได้รับการสนับสนุนอีกต่อไปและไม่เคยมีผลกระทบต่อกระบวนการที่เลือกที่จะไม่เรียก madvise (MADV_WILLNEED, ... )