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

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

1
Linux หน่วยความจำ overcommit
ฉันใช้หน่วยความจำมากเกินไปในการใช้ Linux /proc/sys/vm/overcommit_memoryและฉันได้อ่านบทความสองสามฉบับที่ไม่ได้พูดในสิ่งเดียวกัน เอกสารนี้ภายใต้หัวข้อ "ไปในทิศทางที่ไม่ถูกต้อง" จะกล่าวต่อไปว่า "ค่า 1: ทำ overcommit และ 0 (ค่าเริ่มต้น): ไม่" แต่ในอีกไม่กี่บรรทัดถัดไปจะกล่าวถึงในทำนองเดียวกัน สิ่งต่าง ๆ , สิ่งนี้ไม่เป็นความจริงและ 0 หมายถึง "คาดเดาว่าการวางทับมากเกินไปนั้นสมเหตุสมผล" นั่นหมายความว่าหน่วยความจำทับซ้อนไม่ได้ถูกปิดใช้งานโดยใช้ค่า 0 ใช่ไหม นอกจากนี้ยังระบุว่า 1 ระบุว่า "ไม่ปฏิเสธ malloc ()" ใด ๆ ที่มี 2 ความหมาย "แม่นยำเกี่ยวกับ overcommit - ไม่ต้องใช้พื้นที่ที่อยู่เสมือนที่ใหญ่กว่า swap space บวกกับเศษส่วน overcommit_ratio ของหน่วยความจำกายภาพ" ในทางตรงกันข้ามนิตยสาร Red Hatระบุว่า "ถ้าค่าเป็น 0 …

7
หน่วยความจำเสมือนและ SSD
ในขณะที่เรียนเพื่อสอบ A + ฉันได้อ่านเกี่ยวกับ SSD และฉันคิดกับตัวเองว่าถ้าคุณมี mobo ที่มีขีด จำกัด RAM ต่ำคุณสามารถใช้ SSD เฉพาะสำหรับ Virtual RAM ได้ ฉันค้นหาข้อมูลออนไลน์และข้อมูลที่ฉันพบบอกว่านี่เป็นวิธีปฏิบัติที่ไม่ดี แต่ไม่ได้อธิบายว่าทำไม เหตุใดจึงไม่ควรใช้ SSD สำหรับหน่วยความจำเสมือนและคุณคิดอย่างไรกับไดรฟ์หน่วยความจำเสมือนเฉพาะ ขอบคุณ!

9
จะค้นหาขนาดหน่วยความจำเสมือนและขนาดแคชของระบบ linux ได้อย่างไร
มีคำสั่งใดที่จะได้ขนาดหน่วยความจำเสมือนขนาดแคชและความเร็วบัสด้านหน้าของระบบ linux หรือไม่? swap ใน linux เหมือนกับหน่วยความจำเสมือนจริงหรือไม่?

3
อะไรคือความแตกต่างที่แน่นอนระหว่างพารามิเตอร์ (pgpgin, pswpin) และ (pswpout, pgpgout) ใน / proc / vmstat?
โปรดทราบว่าคำถามนี้เฉพาะกับคำถามlinuxเท่านั้น และโดยที่ผมหมายถึงเฉพาะswap spaceswap partition ฉันทำgoogleสิ่งนี้เล็กน้อยและพบสิ่งเหล่านี้definitions: Paging refers to writing portions, termed pages, of a process’ memory to disk. Swapping, strictly speaking, refers to writing the entire process, not just part, to disk. In Linux, true swapping is exceedingly rare, but the terms paging and swapping often are used interchangeably. และ …


3
อันตรายของการตั้งค่า ExpandUserVA ด้วยตนเองคืออะไร
ฉันใช้ visual studio 2010 ในระบบ 32 บิตและพบปัญหาเกี่ยวกับหน่วยความจำเสมือนไม่เพียงพอดังนั้นฉันจึงไม่สามารถทำสิ่งต่าง ๆ เช่นคัดลอก / วางใน VS ได้อีก ฉันเช็คเอาท์ตัวเลือกสองสามอย่างและบรรทัดของ Microsoftในสิ่งนี้บ่งชี้ว่ากำลังรันโดยเปิดส่วนขยายน้อยลงและหากไม่ได้ผลให้ใช้คำสั่ง bcedit / set IncreUserVA 3072 ดูเหมือนว่าจะช่วยลดปัญหานี้ แต่หลังจากใช้งานไปประมาณหนึ่งวันทันใดนั้น windows ก็เริ่มบอกฉันว่าฉันออกจากพื้นที่ดิสก์ - บนไดรฟ์ที่มีมากกว่า 100Gb ตัวอย่างเช่นมันจะหยุดการคัดลอกไฟล์โดยบอกว่าไม่มีที่ว่างในการคัดลอก อย่างไรก็ตามการคลิก "ลองใหม่" จะสำเร็จ โปรแกรมอื่น ๆ อีกมากมายที่เขียนสิ่งต่าง ๆ ลงบนดิสก์จะล้มลงเป็นประจำ (รวมถึง Skype ... ทำไมคุณถึงเขียนลงดิสก์ตลอดเวลา Skype?!) ฉันรัน chkdsk และทำการตรวจสอบขั้นพื้นฐานอื่น ๆ ก่อนที่จะสรุปว่าการเปลี่ยนแปลงการกำหนดค่าของฉันต้องรับผิดชอบ โชคดีที่กู้คืนการตั้งค่าเริ่มต้นทำงานได้และตอนนี้ฉันกลับมาทำงานอีกครั้ง บทความส่วนใหญ่ (ยกเว้นโดยเฉพาะอย่างยิ่งของ Microsoft) …

2
ทำไมการแลกเปลี่ยนของฉันถูกใช้แม้ว่า RAM จริงของฉันไม่เต็ม
บางครั้งฉันสังเกตเห็นในตัวจัดการระบบของ Ubuntu ว่าไม่มีการใช้ RAM จริงอย่างสมบูรณ์หน่วยความจำ swap จะเริ่มใช้งาน ทำไมถึงเป็นเช่นนั้น?

2
ทำไม CPU ของฉันรองรับ 32GB RAM เมื่อมันมีบิต 39 แอดเดรสเท่านั้น
ต่อไปนี้เป็นผลลัพธ์ของ cat /proc/cpuinfo user@localhost:~$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 60 model name : Intel(R) Core(TM) i3-4130 CPU @ 3.40GHz stepping : 3 microcode : 0x12 cpu MHz : 800.000 cache size : 3072 KB physical id : 0 siblings : 4 …

1
linux: การตรวจสอบตามกระบวนการทุก 10 นาทีพร้อมการเข้าถึงประวัติ
ฉันไม่รู้วิธีที่ดีกว่าในการถามคำถามของฉันดังนั้นคุณจะได้รับคำถามที่ตั้งชื่ออย่างน่ากลัว ฉันจะอธิบายสิ่งที่ฉันต้องการจะทำซึ่งอาจจะช่วยคุณได้ ฉันต้องการให้เครื่อง linux ของฉันตรวจสอบอย่างต่อเนื่อง (ทุก 10 นาที) กระบวนการทั้งหมดในเครื่องของฉัน ข้อมูลจากแต่ละกระบวนการที่ฉันต้องการคือชื่อการใช้งาน CPU หน่วยความจำที่จัดสรร (เสมือน) และหน่วยความจำภายใน (ram) หากต้องดูรายงานตามช่วงเวลาเหล่านี้พวกเขาจะมีลักษณะดังนี้: PROCESS CPU RAM VIRTUAL name1 % MB MB name2 % MB MB ...etc..etc รายงานเหล่านี้ควรถูกจัดเก็บในลักษณะที่ฉันสามารถเข้าถึงได้ในภายหลังโดยกำหนดขอบเขตวันที่ / เวลา (ช่วง) ตัวอย่างเช่นถ้าฉันต้องการดูประวัติกระบวนการของฉันตั้งแต่เวลา 12:00:00 1.12.12 ถึง 12:00:00 2.12.12 ฉันสามารถ - และควรให้ประวัติกระบวนการทุก 10 นาทีระหว่างสิ่งเหล่านั้น เส้นขอบวันที่ / เวลา รูปแบบของการส่งคืนสินค้าไม่ใช่สิ่งสำคัญที่จะได้รับการจัดการโดยสคริปต์อยู่แล้วและสามารถแก้ไขเป็นสิ่งที่ฉันต้องการ ฉันได้ตรวจสอบบางสิ่งจนถึงตอนนี้ แต่ไม่พบสิ่งที่ตรงกับความต้องการของฉันอย่างชัดเจน …

2
หน่วยความจำเสมือนบน Linux ไม่ได้เพิ่มขึ้น?
ฉันดูที่ System Monitor บน Linux และสังเกตว่า Firefox ใช้หน่วยความจำ 441 MB และแอปพลิเคชันอื่น ๆ ใช้ 274, 257, 232 และอื่น ๆ (เพิ่มหน่วยความจำเสมือนมากถึง 3 GB) ดังนั้นฉันจึงสลับไปที่แท็บทรัพยากรและมีข้อความระบุว่าฉันใช้หน่วยความจำ 462 MB และไม่ได้แตะสลับ ฉันสับสน จำนวนหน่วยความจำเสมือนหมายถึงอะไรถ้าโปรแกรมไม่ได้ใช้งานจริง ฉันคิดว่าบางทีหน่วยความจำที่พวกเขาร้องขอ แต่ไม่ได้ใช้ แต่ OS จะรู้ได้อย่างไร ฉันไม่สามารถคิดถึงฟังก์ชั่น "ฉันอาจต้องการความทรงจำมากมายในอนาคต"

2
เหตุใดการใช้ RAM จึงใหญ่กว่าการใช้หน่วยความจำเสมือน
ฉันใช้การทดสอบบางอย่างกับเครื่องที่ทรงพลังมาก (24GB RAM, Window 2008 64 บิต) ฉันตรวจสอบตัวจัดการงานของฉัน: หน่วยความจำกายภาพ: 98% (RAM คือ 24GB) แต่การใช้งาน "หน่วยความจำ (ชุดการทำงานส่วนตัว)" โดยสิ้นเชิงของโปรเซสเซอร์ที่ใช้งานอยู่ทั้งหมดไม่เกิน 16GB 8GB พิเศษเหล่านั้นใช้อยู่ที่ไหน มันใช้บัฟเฟอร์ของระบบปฏิบัติการ IO หรือที่อื่น ๆ ? ใครสามารถมีส่วนร่วมในความคิดบ้างไหม?

3
Virtual Memory มีประโยชน์อย่างไรบ้าง?
ดังนั้นฉันจึงอ่านข้อมูลเกี่ยวกับหน่วยความจำเสมือนและดูเหมือนว่าจะตรงไปตรงมาและใช้งานได้จริง อย่างไรก็ตามฉันสำลักกับแนวคิดหลักหนึ่ง หากหน่วยความจำเสมือนถูกเก็บไว้ในหน่วยความจำหลักทำไมถึงต้องใช้มันตั้งแต่แรก? ทำไมไม่ใช้หน่วยความจำหลัก? ฉันแน่ใจว่าฉันพลาดอะไรบางอย่างที่นี่เพียงแค่ยังไม่เข้าใจอะไรเลย

1
เมื่อกระบวนการไม่ได้ใช้หน่วยความจำเสมือนจะมีเคอร์เนลหรือหน่วยความจำผู้ใช้ใน RAM หรือไม่?
กระบวนการสามารถใช้หน่วยความจำเสมือนสูงสุดไม่เกิน 4 GB (รวมถึงผู้ใช้และเคอร์เนล) แต่เมื่อไม่ใช้หน่วยความจำเสมือนจะมีเคอร์เนลและหน่วยความจำผู้ใช้ในหน่วยความจำหรือไม่

0
Linux บนหน่วยความจำ iMX6 และ CMA
เรามีระบบลินุกซ์ในตัว (yocto 1.8) ที่ทำงานบนบอร์ด i.MX6 พร้อม RAM ขนาด 1GB เคอร์เนลถูกกำหนดค่าให้มี CMA สงวนไว้ 320MByte และไม่มีการสลับ เคอร์เนล 3.10.53 เมื่อเรารันแอปพลิเคชันทดสอบขนาดเล็กเพียงเพื่อกินหน่วยความจำเราจะเห็นพฤติกรรมแปลก ๆ เมื่อเราเข้าถึงฟรีประมาณ 250MByte บัฟเฟอร์ / แคชเริ่มลดลงและหน่วยความจำว่างจะอยู่ที่ประมาณ 250MByte หากเราจัดสรรหน่วยความจำไว้เรื่อย ๆ ระบบก็จะเฉื่อยมากขึ้นเรื่อย ๆ จนกว่ามันจะหยุดชะงักอย่างสมบูรณ์หรือ OOM killer kicks ฉันคิดว่าสิ่งที่ฉันสงสัยคือวิธีการทำงานของ CMA จริงเพราะเราปิดการใช้งาน CMA เราจะเห็นพฤติกรรมเช่นเดียวกับข้างต้น แต่มันเกิดขึ้นเมื่อเรามีประมาณ 40-50MBytes และฉันเชื่อว่าเป็นที่คาดหวัง หลังจากอ่านเกี่ยวกับ CMA ฉันเชื่อว่าสระไม่ควรถูกระงับอย่างสมบูรณ์จากระบบมันควรจะยังคงทำงานได้สำหรับแคช ฯลฯ แต่ในกรณีของเราดูเหมือนว่าระบบจะทิ้งแคชในขณะที่หน่วยความจำเหลืออยู่มากมาย ไม่มีใครรู้ว่านี่เป็นพฤติกรรมที่คาดหวังหรือหากมีสถานที่ที่ดีกว่าที่จะวางคำถามนี้ แก้ไข: ดูเหมือนว่าเราได้เปลี่ยนค่าของ vm.min_free_kbytes เป็น …

1
เนื้อหาของตารางหน้าจะมีลักษณะอย่างไรหลังจากที่เพจถูกสลับไปยังดิสก์
จากสิ่งที่ฉันเข้าใจตารางหน้าจะจับคู่ที่อยู่เสมือนกับที่อยู่ทางกายภาพ แต่จะเกิดอะไรขึ้นหากมีการสลับหน้าออกไปยังดิสก์ ที่ตั้งของข้อมูลจะไม่ใช้บิตในการเขียนมากกว่าที่อยู่จริงหรือไม่ ตำแหน่งของข้อมูลไม่เปลี่ยนแปลงเมื่อมีการแก้ไขไฟล์สลับหรือไม่ ปัญหานี้ได้รับการแก้ไขด้วยวิธีที่ต่างกันในระบบปฏิบัติการที่แตกต่างกันหรือไม่?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.