หน้าแรก
» ลินุกซ์
»
วิธีการตั้งค่าขีดจำกัดหน่วยความจำของ SAP HANA บน SUSE Linux Enterprise Server
วิธีการตั้งค่าขีดจำกัดหน่วยความจำของ SAP HANA บน SUSE Linux Enterprise Server
การควบคุมหน่วยความจำของ SAP HANA บน SUSE Linux Enterprise Server จะได้ผลดีที่สุดเมื่อคุณแยกงานสองอย่างออกจากกัน: การจำกัดสิ่งที่ HANA สามารถจัดสรรได้ และการปกป้องเวิร์กโหลดของ SAP เมื่อโฮสต์ Linux อยู่ภายใต้แรงกดดันด้านหน่วยความจำ SAP HANA จัดการงานแรกด้วยพารามิเตอร์ฐานข้อมูล เช่นglobal_allocation_limitและ ส่วนstatement_memory_limitกลไกการป้องกันหน่วยความจำของเวิร์กโหลดที่ใช้ systemd/cgroup ของ SUSE จะจัดการงานที่สองด้วยMemoryLowบนSAP.sliceกลไกเหล่านี้เสริมซึ่งกันและกัน แต่ไม่สามารถใช้แทนกันได้
คู่มือนี้ใช้เอกสาร SAP HANA Platform 2.0 SPS 08 และคำแนะนำปัจจุบันสำหรับ SUSE Linux Enterprise Server for SAP Applications ที่มีให้ใช้งานในเดือนตุลาคม 2026 ก่อนที่จะทำการเปลี่ยนแปลงระบบที่ใช้งานจริง โปรดตรวจสอบให้แน่ใจว่าเวอร์ชัน HANA และ Service Pack ของ SLES ของคุณได้รับการสนับสนุน คู่มือการติดตั้งของ SAP แนะนำให้ผู้ดูแลระบบดูหมายเหตุ SAP 2235581 สำหรับระบบปฏิบัติการที่ได้รับการสนับสนุน: คู่มือการติดตั้งและการอัปเด ตSAP HANA Server
คุณควรใช้การควบคุมหน่วยความจำแบบใด?
ควบคุม
มันทำอะไรได้บ้าง
เหมาะสมที่สุด
ข้อแลกเปลี่ยนหลัก
global_allocation_limit
จำกัดจำนวนหน่วยความจำที่ SAP HANA สามารถจัดสรรให้กับโฮสต์ได้
เซิร์ฟเวอร์ HANA เฉพาะ, ระบบ SAP ที่ตั้งอยู่ร่วมกัน หรือสภาพแวดล้อมที่ HANA ต้องจัดสรร RAM ไว้สำหรับระบบปฏิบัติการและบริการอื่นๆ
หากตั้งค่าต่ำเกินไป อาจทำให้เกิดความล้มเหลวในการจัดสรรหรือประสิทธิภาพการทำงานที่ไม่ดี ในขณะที่หากตั้งค่าสูงเกินไป จะเหลือพื้นที่ว่างนอกเหนือจาก HANA น้อยลง
เริ่มต้นที่ SLES โดยตรวจสอบ RAM ทางกายภาพ หน่วยความจำที่ใช้งานได้ กิจกรรมสวอป และว่ากระบวนการ SAP ได้ถูกจัดกลุ่มไว้แล้วหรือไม่ ขั้นSAP.sliceตอนนี้จะช่วยให้คุณทราบเงื่อนไขขอบเขตก่อนที่จะตัดสินใจว่า HANA จะใช้หน่วยความจำได้มากน้อยเพียงใด
free -h
grep MemTotal /proc/meminfo
systemctl status SAP.slice
อย่ากำหนดขีดจำกัดของ HANA โดยการหักจำนวนกิกะไบต์คงที่ออกจาก RAM ที่ติดตั้งไว้ ควรสำรองหน่วยความจำไว้สำหรับเคอร์เนล Linux, SAP Host Agent, ซอฟต์แวร์ตรวจสอบ, เครื่องมือสำรองข้อมูล, ส่วนประกอบคลัสเตอร์ และเซิร์ฟเวอร์แอปพลิเคชันที่อยู่ร่วมกัน หาก ABAP และ HANA ใช้โฮสต์เดียวกัน SAP กำหนดไว้อย่างชัดเจนว่าขนาดของทั้งสองระบบต้องพอดีกับหน่วยความจำทางกายภาพ และแนะนำให้ประสานขีดจำกัดการจัดสรรโดยรวมของ HANA กับPHYS_MEMSIZEการตั้งค่า ABAP: การกำหนดค่าการ ตั้งค่าหน่วยความจำของ SAP
SUSE Linux จะตรวจสอบหน่วยความจำที่ติดตั้ง ความพร้อมใช้งานในปัจจุบัน และ cgroup SAP.slice ก่อนที่จะเลือกขีดจำกัดการจัดสรร HANA
ขั้นตอนที่ 2: อ่านค่าพารามิเตอร์หน่วยความจำ HANA ที่มีอยู่
ก่อนทำการเปลี่ยนแปลงใดๆ โปรดบันทึกการตั้งค่าปัจจุบัน คุณสามารถตรวจสอบได้M_INIFILE_CONTENTSจาก SAP HANA Database Explorer, คอนโซล Cockpit SQL หรือไคลเอ็นต์ SQL ที่ได้รับอนุญาตอื่นๆ
SELECT FILE_NAME, SECTION, KEY, VALUE, LAYER_NAME
FROM M_INIFILE_CONTENTS
WHERE FILE_NAME = 'global.ini'
AND SECTION = 'memorymanager'
AND KEY IN ('global_allocation_limit',
'statement_memory_limit',
'statement_memory_limit_threshold')
ORDER BY KEY, LAYER_NAME;
statement_memory_limitฟังก์ชันนี้ควบคุมการจัดสรรหน่วยความจำสูงสุดสำหรับคำสั่งเดียว และแสดงเป็นหน่วย GB SAP ระบุค่าเริ่มต้นเป็น 0 ซึ่งหมายความว่าไม่มีการจำกัดเฉพาะคำสั่ง การกำหนดค่าที่แน่นอนจะมีประโยชน์เมื่อการสืบค้นข้อมูลเชิงวิเคราะห์แบบเฉพาะกิจหรือการเชื่อมต่อข้อมูลที่กรองไม่ดีอาจใช้หน่วยความจำส่วนกลางจำนวนมาก
ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM')
SET ('memorymanager', 'statement_memory_limit') = '5'
WITH RECONFIGURE;
ข้อแลกเปลี่ยนนั้นชัดเจน: การกำหนดขีดจำกัดที่เข้มงวดมากขึ้นจะช่วยป้องกันการทำงานพร้อมกัน แต่ก็อาจทำให้คำสั่งที่ใช้หน่วยความจำมากซึ่งจำเป็นต่อธุรกิจของคุณถูกยกเลิกได้ SAP ระบุว่าการถึงขีดจำกัดจะทำให้คำสั่งถูกยกเลิกและอาจทำให้เกิดข้อผิดพลาด (dump) ที่compositelimit_oomมีชื่อไฟล์ว่า .dump สำหรับรายละเอียดเพิ่มเติม โปรดดูส่วนการจัดการหน่วยความจำในคู่มือการแก้ไขปัญหาและการวิเคราะห์ประสิทธิภาพของ SAP HANA
ขั้นตอนที่ 6: ปกป้องหน่วยความจำ SAP บน SUSE ด้วย MemoryLow ไม่ใช่การจำกัดหน่วยความจำแบบตายตัวครั้งที่สอง
บน SLES สำหรับแอปพลิเคชัน SAP นั้น SUSE แนะนำให้ใช้ Workload Memory Protection ผ่าน systemd และ cgroup v2 อินสแตนซ์ของ SAP จะถูกจัดวางไว้ในSAP.sliceและ SUSE ระบุว่าสำหรับ SAP HANA นั้น สามารถใช้ HANA Global Allocation Limit เป็นพื้นฐานMemoryLowได้
sudo systemctl set-property SAP.slice MemoryLow=180G
systemctl show SAP.slice -p MemoryLow
MemoryLowเป็นค่าขีดจำกัดการป้องกัน: ภายใต้สภาวะที่หน่วยความจำมีจำกัด เคอร์เนลจะพยายามปกป้องปริมาณนั้นสำหรับ cgroup มันไม่เหมือนกับMemoryMaxและไม่ได้มาแทนที่ตัวจัดสรรหน่วยความจำของ HANA เอง ความแตกต่างนี้มีความสำคัญเพราะข้อจำกัดระดับระบบปฏิบัติการที่เข้มงวดอาจสร้างโหมดความล้มเหลวที่แตกต่างจากการควบคุมการจัดสรรภายในของ HANA
SUSE ยังเตือนไม่ให้ตั้งค่าMemoryLowใกล้เคียงหรือสูงกว่าหน่วยความจำทางกายภาพทั้งหมด เนื่องจากบริการระบบและซอฟต์แวร์ที่ติดตั้งอื่นๆ ก็ต้องการหน่วยความจำเช่นกัน คำแนะนำล่าสุดมีอยู่ในเอกสาร SUSE Workload Memory Protection for SLES for SAP 15 SP6
บน SLES MemoryLowจะช่วยปกป้อง SAP.slice ในระหว่างที่หน่วยความจำของโฮสต์มีปริมาณจำกัด และจะไม่กำหนดขีดจำกัดการจัดสรรหน่วยความจำของ HANA
ขั้นตอนที่ 7: ตรวจสอบให้แน่ใจว่าคุณไม่ได้เพิ่ม cgroup cap ที่ขัดแย้งกันโดยไม่ได้ตั้งใจ
SELECT FILE_NAME, SECTION, KEY, VALUE
FROM M_INIFILE_CONTENTS
WHERE FILE_NAME = 'global.ini'
AND SECTION = 'memorymanager'
ORDER BY KEY;
คอยสังเกตเหตุการณ์หน่วยความจำไม่เพียงพอ การยกเลิกคำสั่ง แรงดันหน่วยความจำสูงอย่างต่อเนื่อง การสลับหน่วยความจำ และความหน่วงของเวิร์กโหลด หากคำสั่งที่เคยทำงานเสร็จสมบูรณ์เริ่มล้มเหลวด้วยข้อผิดพลาดเกี่ยวกับขีดจำกัดหน่วยความจำ ค่าต่อคำสั่งของคุณอาจเข้มงวดเกินไป หาก Linux มีพื้นที่เหลือน้อยมากในขณะที่ HANA ใกล้ถึงขีดจำกัดโดยรวมเป็นประจำ ขีดจำกัดโดยรวมอาจสูงเกินไปสำหรับเวิร์กโหลดรวมของโฮสต์ หาก HANA ยังคงต่ำกว่าขีดจำกัดมากในขณะที่การสืบค้นที่สำคัญกำลังเกิดการล้นหรือถูกยกเลิก ขีดจำกัดอาจต่ำเกินไป หรือเวิร์กโหลดอาจต้องการนโยบายที่ตรงเป้าหมายมากขึ้น
การตรวจสอบขั้นสุดท้ายควรยืนยันค่าที่กำหนดไว้ใน HANA และตามด้วยการสังเกตการณ์ภายใต้ภาระงานที่เป็นตัวแทน
การเลือกนโยบายสำหรับรูปแบบการใช้งานทั่วไป
โฮสต์ HANA สำหรับการผลิตโดยเฉพาะ
ควรใช้การจัดการการจัดสรรหน่วยความจำส่วนกลางของ HANA เอง และเว้นพื้นที่ว่างในระบบปฏิบัติการให้เพียงพอตามขนาดของ SAP เพิ่มขีดจำกัดจำนวนคำสั่งเฉพาะเมื่อประวัติการทำงานแสดงให้เห็นว่าคำสั่งแต่ละรายการอาจคุกคามการทำงานพร้อมกัน ใช้ SUSE MemoryLowเมื่อคุณต้องการปกป้องภาระงานของ SAP จากแรงกดดันด้านหน่วยความจำที่ไม่เกี่ยวข้องกับ SAP บนโฮสต์
เซิร์ฟเวอร์แอปพลิเคชัน HANA Plus บนโฮสต์เดียว
ใช้การกำหนดงบประมาณอย่างชัดเจน ประสานงาน HANA global_allocation_limitกับการตั้งค่าหน่วยความจำของแอปพลิเคชันเซิร์ฟเวอร์ เช่น วิธีPHYS_MEMSIZEนี้มีความยืดหยุ่นน้อยกว่าการปล่อยให้ทั้งสองฝั่งเติบโตได้อย่างอิสระ แต่จะช่วยลดความเสี่ยงที่ส่วนประกอบหนึ่งจะใช้หน่วยความจำที่อีกส่วนประกอบหนึ่งต้องการ
การมอง MemoryLow เป็นขีดจำกัดสูงสุดที่กำหนดไว้มันช่วยปกป้องหน่วยความจำ ไม่ได้จำกัดการใช้งาน HANA ให้อยู่ที่ปริมาณนั้น
การตั้งค่า MemoryMax นั้นฟังดูคล้ายกับขีดจำกัดการจัดสรรหน่วยความจำของ HANA แต่ความหมายนั้นแตกต่างกัน และขีดจำกัดสูงสุดที่กำหนดโดยระบบปฏิบัติการอาจไปรบกวนการจัดการหน่วยความจำของ HANA เองได้
ไม่เหลือพื้นที่ว่างสำหรับ SUSE และบริการสนับสนุน HANA ไม่ใช่ผู้ใช้ RAM ทางกายภาพเพียงรายเดียว
คำแนะนำสุดท้าย
ใช้ค่าของ SAP HANA global_allocation_limitเป็นขีดจำกัดหลักสำหรับหน่วยความจำ HANA เพิ่มหน่วยความจำstatement_memory_limitเฉพาะเมื่อต้องการควบคุมความเสี่ยงของแต่ละคิวรี และใช้การกำหนดนโยบายเฉพาะผู้ใช้หรือเฉพาะคลาสของเวิร์กโหลดเมื่อเวิร์กโหลดที่แตกต่างกันสมควรได้รับขีดจำกัดที่แตกต่างกัน บน SUSE Linux Enterprise Server สำหรับแอปพลิเคชัน SAP ให้ใช้SAP.sliceMemoryLowเพื่อป้องกันเวิร์กโหลด SAP จากแรงกดดันระดับโฮสต์ แทนที่จะพยายามทำซ้ำขีดจำกัดของ HANA ด้วยการกำหนดขีดจำกัดสูงสุดแบบตายตัวใน cgroup
ข้อแลกเปลี่ยนที่สำคัญที่สุดคือระหว่างความจุสูงสุดของแคช/การสืบค้นข้อมูลของ HANA และพื้นที่ว่างบนโฮสต์ที่เพียงพอเพื่อให้ระบบปฏิบัติการและบริการที่ติดตั้งร่วมกันทำงานได้อย่างราบรื่น ควรพิจารณาตัวเลขสุดท้ายจากขนาดของ SAP และช่วงเวลาที่มีการใช้งานสูงสุดที่สังเกตได้ จากนั้นตรวจสอบทั้ง HANA และ SLES หลังจากการเปลี่ยนแปลง