คำถามติดแท็ก shared-memory

3
ในหน่วยความจำระบบ…โดยเฉพาะความแตกต่างระหว่าง `tmpfs,` `shm, 'และ' hugepages ... '
ฉันเพิ่งสงสัยเกี่ยวกับระบบไฟล์ที่ใช้หน่วยความจำเคอร์เนลลินุกซ์ต่างๆ Note:เท่าที่ฉันกังวลคำถามด้านล่างควรพิจารณาตัวเลือกมากขึ้นหรือน้อยลงเมื่อเทียบกับความเข้าใจที่ดีขึ้นของการโพสต์ในชื่อเรื่อง ฉันถามพวกเขาด้านล่างเพราะฉันเชื่อว่าการตอบคำถามพวกเขาสามารถช่วยฉันให้เข้าใจความแตกต่างได้ดีขึ้น แต่เนื่องจากความเข้าใจของฉันมี จำกัด ดังนั้นจึงเป็นไปตามที่คนอื่นอาจรู้ดีกว่า ฉันพร้อมที่จะยอมรับคำตอบใด ๆ ที่เสริมสร้างความเข้าใจในความแตกต่างระหว่างระบบไฟล์ทั้งสามที่กล่าวถึงในชื่อเรื่อง ท้ายที่สุดฉันคิดว่าฉันต้องการติดตั้งระบบไฟล์ที่ใช้งานได้hugepages,แม้ว่างานวิจัยเบา ๆ (และยังคงมีการแก้ไขเล็กน้อย) ทำให้ฉันเชื่อว่า a rewritable hugepage mountไม่ใช่ตัวเลือก ฉันเข้าใจผิด กลไกอะไรที่เล่นที่นี่? ยังเกี่ยวกับ hugepages: uname -a 3.13.3-1-MANJARO \ #1 SMP PREEMPT \ x86_64 GNU/Linux tail -n8 /proc/meminfo HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 8223772 kB DirectMap2M: 16924672 …

1
ผิดหรือเปล่าที่คิดว่า“ memfd” เป็น“ กระบวนการที่เป็นเจ้าของไฟล์”
https://dvdhrm.wordpress.com/2014/06/10/memfd_create2/ ในทางทฤษฎีคุณสามารถบรรลุ [ memfd_create()] พฤติกรรมโดยไม่ต้องแนะนำ syscalls ใหม่เช่นนี้ int fd = open("/tmp", O_RDWR | O_TMPFILE | O_EXCL, S_IRWXU); (หมายเหตุเพื่อรับประกัน tmpfs มากขึ้นที่นี่เราสามารถใช้ " /dev/shm" แทน " /tmp") ดังนั้นคำถามที่สำคัญที่สุดคือทำไมเราถึงต้องการวิธีที่สาม? [ ... ] หน่วยความจำสำรองจะถูกประมวลผลโดยกระบวนการที่เป็นเจ้าของไฟล์และไม่อยู่ภายใต้การเมาต์โควต้า ฉันคิดถูกแล้วว่าส่วนแรกของประโยคนี้ไม่สามารถพึ่งพาได้ รหัสmemfd_create () มีการใช้งานอย่างแท้จริงว่าเป็น " ไฟล์ที่ไม่เชื่อมโยงอยู่ใน [a] tmpfs ซึ่งต้องเป็นเคอร์เนลภายใน " การติดตามรหัสฉันเข้าใจว่ามันไม่ได้มีการใช้การตรวจสอบ LSM แตกต่างกันนอกจากนี้ memfds ยังถูกสร้างขึ้นเพื่อรองรับ "แมวน้ำ" เนื่องจากโพสต์บล็อกอธิบายต่อไป อย่างไรก็ตามฉันสงสัยอย่างมากว่า memfds มีสัดส่วนแตกต่างจาก …

1
อะไรคือความแตกต่างของหน่วยความจำที่ใช้ร่วมกันระหว่างระบบยูนิกซ์รุ่นแรกและรุ่นใหม่?
กระบวนการสามารถแชร์หน่วยความจำใน Unix รุ่นแรกได้อย่างไร สิ่งนี้เปรียบเทียบกับการใช้งานที่ทันสมัยของหน่วยความจำที่ใช้ร่วมกันได้อย่างไร

1
ใช้ `/ run / shm` (ก่อนหน้านี้` / dev / shm`) เป็นไดเรกทอรีชั่วคราว
เป็นการดีที่จะสร้างไดเรกทอรีใน/run/shm(ก่อนหน้านี้/dev/shm) และใช้สิ่งนั้นเช่นไดเรกทอรีชั่วคราวสำหรับโปรแกรมหรือไม่? พื้นหลัง: ฉันกำลังเขียนการทดสอบกล่องดำสำหรับโปรแกรมที่ทำสิ่งต่าง ๆ มากมายด้วยไฟล์และไดเรกทอรี สำหรับการทดสอบทุกครั้งฉันสร้างไฟล์และไดเรกทอรีจำนวนมากจากนั้นเรียกใช้โปรแกรมแล้วสร้างชุดไฟล์และไดเรกทอรีที่คาดหวังจากนั้นเรียกใช้ diff เพื่อเปรียบเทียบ ตอนนี้ฉันมีการทดสอบประมาณ 40 ครั้งและพวกเขาใช้เวลาในการรัน 2 วินาที หวังว่าจะเร่งความเร็วฉันต้องการรันการทดสอบในไดเรกทอรีบน ramdisk บางประเภท การค้นคว้าเกี่ยวกับ ram disk ฉันสะดุดกับคำถามด้วยคำตอบที่ระบุว่าไม่เป็นไรในการสร้างไดเรกทอรี/dev/shmและใช้งานเช่นเดียวกับไดเรกทอรีชั่วคราว ค้นคว้าเพิ่มเติมอีกเล็กน้อยแต่ฉันเจอหน้า wikiจาก debian ที่ระบุว่าเป็นข้อผิดพลาดในการใช้/dev/shmโดยตรง ฉันควรใช้shm_*ฟังก์ชั่น น่าเสียดายที่shm_*ฟังก์ชั่นดูเหมือนจะไม่สามารถใช้งานได้ในเชลล์สคริปต์ ตอนนี้ฉันสับสน มันโอเคหรือไม่ที่จะใช้/run/shm(เดิม/dev/shm) เหมือนไดเรกทอรีชั่วคราวหรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.