เรามีระบบที่มีหน่วยความจำ 1 GB จากนี้ฉันต้องการ จำกัด เพียง 512MB สำหรับ linux และต้องการเข้าถึง 512MB ที่เหลือโดยตรงจากแอปพลิเคชันที่ทำงานบน linux
อะไรคือข้อเสนอแนะเพื่อให้บรรลุสิ่งนี้ใน 2.6.x
ขอแสดงความนับถือ Prab
เรามีระบบที่มีหน่วยความจำ 1 GB จากนี้ฉันต้องการ จำกัด เพียง 512MB สำหรับ linux และต้องการเข้าถึง 512MB ที่เหลือโดยตรงจากแอปพลิเคชันที่ทำงานบน linux
อะไรคือข้อเสนอแนะเพื่อให้บรรลุสิ่งนี้ใน 2.6.x
ขอแสดงความนับถือ Prab
คำตอบ:
คุณกำลังใช้งาน linux - หน่วยความจำทั้งหมดในเครื่องของคุณจะพร้อมใช้งานกับ linux เพื่อให้ linux สามารถให้โปรแกรมของคุณได้
หากระบบมี 512Mb ที่ให้บริการฟรีระบบจะมอบให้กับโปรแกรมของคุณหากไม่สามารถทำได้
มีวิธีพิเศษที่คุณสามารถใช้เพื่อให้แน่ใจว่า 512Mb ถูกล็อคเข้ากับ ram (ไม่สามารถสลับเป็นดิสก์ได้) แต่ฉันคิดว่านี่เป็นสิ่งที่เกินกว่าที่คุณต้องทำ
สิ่งเดียวที่ฉันนึกได้ก็คือให้แอปพลิเคชันของคุณมี malloc () ขนาด 512 เมกะไบต์เมื่อมันเริ่มทำงานครั้งแรกแล้วแบ่งหน่วยความจำด้วยตนเองภายในโปรแกรม และเด็กชายแหมเด็กชายนั่นน่าเกลียด
ฉันไม่เข้าใจคำถามจริงๆ คุณจะต้องอธิบายวัตถุประสงค์ของคุณให้ชัดเจนยิ่งขึ้น
Linux จะจัดสรรหน่วยความจำให้กับแอปพลิเคชันดังนั้นหาก Linux มีหน่วยความจำก็จะมอบให้แอปของคุณ
หากคุณต้องการมีหน่วยความจำแน่นอนตอนนี้คุณควร
หากคุณต้องการหน้าเว็บทั้งหมดที่โปรแกรมของคุณใช้เป็นหลักให้ใช้ mlockall
จัดสรรการทำแผนที่ที่ไม่ระบุชื่อกับ 512MB mmap()และแล้วล็อคด้วยMAP_POPULATEmlock()
แอปพลิเคชันของคุณไม่สามารถพูดคุยกับ "DIMM 2, chip 3, 42nd byte" มันต้องการส่วนอื่น ๆ ของระบบรวมถึง Linux เพื่อกำหนดหมายเลข (ที่อยู่) ให้กับทุก ๆ หน่วยความจำ หากคุณแยก 512 MB ออกจาก Linux แสดงว่าไม่มีที่อยู่ นั่นหมายความว่าแอปพลิเคชันของคุณไม่สามารถพูดคุยเกี่ยวกับหน่วยความจำได้
จะมีปัญหามากขึ้น เช่นฟังก์ชั่นจำศีลจะไม่เรียกคืนหน่วยความจำเมื่อตื่นขึ้น แต่นั่นคือทฤษฎีทั้งหมดเนื่องจากหน่วยความจำจะไม่มีสิ่งใดเลย - หากไม่มีที่อยู่จะไม่มีวิธีเขียนลงในหน่วยความจำ