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

ในการคำนวณหน่วยความจำหมายถึงข้อมูลสถานะของระบบคอมพิวเตอร์เนื่องจากมันถูกเก็บไว้ในโครงสร้างทางกายภาพบางอย่าง

1
รับข้อมูลเกี่ยวกับการใช้หน่วยความจำของกระบวนการจาก / proc / pid / smaps
สำหรับกระบวนการที่กำหนดใน/proc/<pid>/smapsสำหรับรายการการแม็พที่กำหนดคือ: Shared_Clean Shared_Dirty Private_Clean Private_Dirty เป็นShared_Clean+ Shared_Dirtyจำนวนหน่วยความจำที่ใช้ร่วมกันกับกระบวนการอื่น ๆ ? มันเหมือนกับ RSS ที่แชร์ใช่ไหม ในทำนองเดียวกันPrivate_Clean+ Private_Dirtyจำนวนหน่วยความจำที่มีอยู่สำหรับกระบวนการเดียวเท่านั้นหรือไม่ ดังนั้นมันจึงเป็นเหมือน RSS ส่วนตัว? ค่า PSS = PrivateRSS + (SharedRSS / จำนวนกระบวนการที่ใช้ร่วมกัน) หรือไม่ บางคำถามเพิ่มเติมหลังจากอ่านลิงค์นี้: LWN ตอนนี้ให้พูดคุยเกี่ยวกับกระบวนการทั้งหมดซึ่ง smaps รายการที่เรากำลังดู ฉันสังเกตเห็นว่าถ้าฉันทำShared_Clean+ Shared_Dirty+ Private_Clean+ Private_Dirtyสำหรับทุกรายการ smaps สำหรับกระบวนการฉันได้รับ RSS ของกระบวนการตามที่รายงานโดยpsซึ่งค่อนข้างเจ๋ง สำหรับเช่น ps -p $$ -o pid,rss จะให้ฉัน (ประมาณ) ค่าเดียวกันสำหรับ RSS เป็นผลรวมของทุกคนShared_Clean, …

5
การวัดการใช้ RAM ของโปรแกรม
time เป็นคำสั่งที่ยอดเยี่ยมถ้าคุณต้องการที่จะคำนวณเวลาของ CPU ที่คำสั่งที่ได้รับ ฉันกำลังมองหาสิ่งที่คล้ายกันซึ่งสามารถวัดการใช้ RAM สูงสุดของโปรแกรมและเด็ก ๆ ควรแยกความแตกต่างระหว่างหน่วยความจำที่จัดสรรที่ใช้และไม่ได้ใช้ บางทีมันอาจให้การใช้หน่วยความจำมัธยฐาน (ดังนั้นการใช้หน่วยความจำที่คุณควรคาดหวังเมื่อทำงานเป็นเวลานาน) ดังนั้นฉันต้องการทำ: rammeassure my_program my_args และรับเอาต์พุตคล้ายกับ: Max memory allocated: 10233303 Bytes Max memory used: 7233303 Bytes Median memory allocation: 5233303 Bytes ฉันดูmemusg https://gist.github.com/526585/590293d6527c91e48fcb08edb8de9fd6c88a6d82แต่ฉันคิดว่ามันค่อนข้างแฮ็ค

3
จะสร้างผู้ใช้ที่มีการใช้งาน RAM จำกัด ได้อย่างไร?
ดังนั้นฉันจึงมี 4 GB RAM + 4GB swap ฉันต้องการสร้างผู้ใช้ที่มี ram และ swap จำกัด : 3 GB RAM และ 1 GB swap เป็นไปได้ไหม เป็นไปได้หรือไม่ที่จะเริ่มต้นแอพพลิเคชั่นด้วย RAM ที่ จำกัด และสลับใช้ได้โดยไม่ต้องสร้างผู้ใช้แยกต่างหาก (และไม่ติดตั้งแอพพิเศษใด ๆ - มีเพียงแค่การกำหนดค่าเซิร์ฟเวอร์ Debian / CentOS เริ่มต้น ปรับปรุง: ดังนั้นฉันเปิด terminall และพิมพ์ลงในคำสั่งulimit : ulimit -v 1000000ซึ่งจะเป็น976,6Mbข้อ จำกัด ต่อไปฉันโทรไปulimit -aและเห็นข้อ จำกัด นั้นคือ "เปิด" จากนั้นผมเริ่มทุบตีสคริปต์บางที่รวบรวมและเริ่ม app …

4
ขนาดหน้าถูกกำหนดในพื้นที่ที่อยู่เสมือนอย่างไร
Linux ใช้ระบบหน่วยความจำเสมือนที่อยู่ทั้งหมดเป็นที่อยู่เสมือนไม่ใช่ที่อยู่จริง ที่อยู่เสมือนเหล่านี้จะถูกแปลงเป็นที่อยู่จริงโดยโปรเซสเซอร์ เพื่อให้การแปลนี้ง่ายขึ้นหน่วยความจำเสมือนและกายภาพจะถูกแบ่งออกเป็นหน้า ๆ แต่ละหน้าเหล่านี้จะได้รับหมายเลขที่ไม่ซ้ำกัน; หมายเลขเฟรมหน้า ขนาดหน้าบางขนาดอาจเป็น 2 KB, 4 KB เป็นต้น แต่จะมีการกำหนดหมายเลขขนาดหน้านี้อย่างไร มันได้รับอิทธิพลจากขนาดของสถาปัตยกรรมหรือไม่? ตัวอย่างเช่นบัส 32 บิตจะมีพื้นที่ที่อยู่ 4 GB

2
ดีบักหน่วยความจำไม่เพียงพอด้วย / var / log / messages
รายงานต่อไปนี้จะถูกโยนลงในบันทึกข้อความของฉัน: kernel: Out of memory: Kill process 9163 (mysqld) score 511 or sacrifice child kernel: Killed process 9163, UID 27, (mysqld) total-vm:2457368kB, anon-rss:816780kB, file-rss:4kB ไม่สำคัญว่าถ้าปัญหานี้คือสำหรับhttpd, mysqldหรือpostfixแต่ผมอยากรู้ว่าฉันสามารถดำเนินการต่อการแก้จุดบกพร่องปัญหา ฉันจะรับข้อมูลเพิ่มเติมเกี่ยวกับสาเหตุที่ทำให้ PID 9163 ถูกฆ่าได้อย่างไรและฉันไม่แน่ใจว่า linux เก็บประวัติของ PID ที่ถูกยกเลิกที่ไหนสักแห่งหรือไม่ หากสิ่งนี้เกิดขึ้นในไฟล์บันทึกข้อความของคุณคุณจะแก้ไขปัญหานี้ทีละขั้นตอนได้อย่างไร # free -m total used free shared buffers cached Mem: 1655 934 721 0 10 …

4
grep: หน่วยความจำหมด
ฉันกำลังค้นหาง่าย ๆ : grep -R Milledgeville ~/Documents และหลังจากระยะเวลาหนึ่งข้อผิดพลาดนี้ปรากฏขึ้น: grep: memory exhausted ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร ฉันมี RAM 10GB ในระบบของฉันและมีแอปพลิเคชั่นบางตัวที่ทำงานอยู่ดังนั้นฉันจึงประหลาดใจจริงๆที่ grep ธรรมดาหมดหน่วยความจำ ~/Documentsประมาณ 100GB และมีไฟล์ทุกชนิด grep -RI อาจไม่มีปัญหานี้ แต่ฉันต้องการค้นหาในไฟล์ไบนารีเช่นกัน

6
ฉันจะใช้พื้นที่สว็อปในกรณีฉุกเฉินเท่านั้นได้อย่างไร
ฉันมีแล็ปท็อป Debian (Buster) ที่มี8 GB RAM และ 16GB swap ฉันกำลังทำงานที่ใช้เวลานานมาก นี่หมายความว่าแล็ปท็อปของฉันถูกทิ้งไว้ในช่วงหกวันที่ผ่านมาในขณะที่มันปั่นผ่าน ขณะทำสิ่งนี้ฉันต้องใช้แล็ปท็อปเป็นระยะเป็นระยะ นี่ไม่ควรเป็นปัญหา งานที่ใช้เวลานานคือ I / O ที่ถูกผูกไว้ทำงานผ่านสิ่งต่างๆบนฮาร์ดดิสก์ USB และไม่ใช้ RAM (<200 MB) หรือ CPU (<4%) มากนัก ปัญหาคือเมื่อฉันกลับมาที่แล็ปท็อปของฉันหลังจากนั้นไม่กี่ชั่วโมงมันจะซบเซามากและอาจใช้เวลา 30 นาทีเพื่อกลับมาเป็นปกติ นี่เป็นสิ่งที่แย่มากที่ผู้ตรวจสอบความผิดพลาดติดธงทำเครื่องหมายแอปพลิเคชันของตนว่าค้าง (โดยเฉพาะหน้าต่างเบราว์เซอร์) และสิ่งต่าง ๆ เริ่มทำงานผิดพลาดอย่างไม่ถูกต้อง เมื่อดูจากการตรวจสอบระบบของ 2.5 GB ที่ใช้ประมาณครึ่งหนึ่งจะถูกเปลี่ยนเป็นการสลับ ฉันยืนยันว่าปัญหานี้เกิดจากการลบพื้นที่สว็อป ( swapoff /dev/sda8) ถ้าฉันทิ้งไว้โดยไม่มีพื้นที่สว็อปมันจะกลับมามีชีวิตอีกครั้งในทันทีแม้หลังจากผ่านไป 24 ชั่วโมง ด้วยการแลกเปลี่ยนมันเป็นอิฐในช่วงห้านาทีแรกที่เหลือเพียงหกชั่วโมง ฉันยืนยันว่าการใช้หน่วยความจำไม่เกิน3 GBแม้ในขณะที่ฉันไม่อยู่ ฉันได้พยายามลดความไม่แน่นอน …
41 linux  memory  swap 

1
การโหลดไลบรารีที่แบ่งใช้และการใช้ RAM
ฉันสงสัยเกี่ยวกับวิธีที่ Linux จัดการไลบรารีที่แชร์ (อันที่จริงฉันกำลังพูดถึง Maemo Fremantle, ดิสทริบิวเตอร์เดเบียนที่เปิดตัวในปี 2009 ทำงานบน RAM ขนาด 256MB) สมมติว่าเรามีไฟล์ประมวลผลสองไฟล์เชื่อมโยงไปยัง libQtCore.so.4 และใช้สัญลักษณ์ (โดยใช้คลาสและฟังก์ชัน) เพื่อประโยชน์ของความเรียบง่ายขอเรียกพวกเขาและa bเราสันนิษฐานว่าลิงก์ประมวลผลทั้งสองเชื่อมโยงไปยังไลบรารีเดียวกัน aการเปิดตัวครั้งแรกที่เรา ต้องโหลดห้องสมุด มีการโหลดทั้งหมดหรือโหลดไปยังหน่วยความจำเฉพาะในส่วนที่ต้องการ (เนื่องจากเราไม่ใช้แต่ละคลาสจะมีเฉพาะรหัสที่เกี่ยวกับคลาสที่ใช้แล้วเท่านั้นที่กำลังโหลด) bจากนั้นเราก็เปิด เราคิดว่าaยังคงทำงานอยู่ bเชื่อมโยงไปยัง libQtCore.so.4 เกินไปและใช้บางส่วนของการเรียนที่aใช้ aแต่ยังมีบางส่วนที่ไม่ได้ใช้งานโดย ห้องสมุดจะถูกโหลดสองครั้ง (แยกกันaและแยกต่างหากb) หรือพวกเขาจะใช้วัตถุเดียวกันอยู่แล้วใน RAM หากbไม่มีสัญลักษณ์ใหม่และaกำลังใช้งาน RAM ที่ใช้งานโดยไลบรารีที่แชร์เพิ่มขึ้นหรือไม่ (หรือความแตกต่างจะไม่มีนัยสำคัญ)

3
พารามิเตอร์ vm.swappiness ควบคุมอะไรได้จริง?
ตามเอกสารเคอร์เนล: This control is used to define how aggressive the kernel will swap memory pages. Higher values will increase aggressiveness, lower values decrease the amount of swap. อย่างไรก็ตามนี่เป็นสิ่งที่คลุมเครือ ฉันพยายามคิดให้ชัดเจนว่าพารามิเตอร์ใดควบคุมได้ในที่สุด ฉันรู้ว่ามันปรับวิธีที่เคอร์เนลพยายามสลับหน้าอย่างจริงจัง แต่กระบวนการตัดสินใจในโค้ดเคอร์เนลมีผลกระทบอย่างไร มันปรับระยะเวลาที่ผ่านมาที่หน้าต้องได้รับการเข้าถึงก่อนที่เคอร์เนลจะสลับออกหรือไม่? ถ้าเป็นเช่นนั้นค่าเริ่มต้น 60 แสดงถึงอะไร? และมีการเปลี่ยนแปลงเท่าใดโดยการเพิ่ม / ลดลง 1 (สูตรจะดี) หรือมันสลับหน้าตามความถี่ในการเข้าถึงของพวกเขา? หรืออย่างอื่น?
36 linux  kernel  memory  swap 

4
ระบบค้างเมื่อหน่วยความจำไม่เพียงพอ
ฉันมี eeePC 900a: มันมีแฟลช 8GB เป็นดิสก์และ RAM เพียง 1GB การกระจาย Linux ที่ติดตั้งในนั้นคือ ArchLinux เมื่อหน่วยความจำไม่เพียงพอระบบจะไม่ตอบสนองอย่างมาก : ใช้เวลาหลายวินาที / นาทีในการทำสิ่งต่าง ๆ เช่นการเปลี่ยนไปใช้ TTY1 หรือแม้แต่เลื่อนตัวชี้เมาส์ บางครั้งดูเหมือนว่าระบบจะค้าง: สามของเราที่ผ่านมาฉันปล่อยให้มันคนเดียวและไม่มีอะไรเปลี่ยนแปลงเลย ฉันควรหลีกเลี่ยงการสร้าง swap พาร์ติชั่น / ไฟล์ใน eeePC นี้เนื่องจากดิสก์มีขนาดเล็กและเนื่องจากการเขียนจำนวนมากบนพื้นที่สว็อปจะทำให้อายุการใช้งานของการ์ดแฟลชสั้นลง ยิ่งกว่านั้นฉันคิดว่า swap file / partition นั้นจะย้ายปัญหาแทนที่จะทำการแก้ไขอย่างแน่นอน เคอร์เนลไม่ควรฆ่าแอปพลิเคชั่นแบบสุ่มเมื่อหน่วยความจำไม่เพียงพอหรือไม่ ทำไมมันจึงล้มเหลว (หรือใช้เวลานาน) ในการทำเช่นนั้น? ไม่กี่เดือน / ปีที่ผ่านมาฉันพยายามมองลึกเข้าไปในเรื่องนี้ แต่ไม่พบสิ่งใดที่จะใช้งานได้จริง ...
34 linux  memory  freeze 

5
วิธีตรวจสอบกระบวนการที่ใช้หน่วยความจำส่วนใหญ่
เมื่อฉันเช็คอินfreeหนึ่งในเซิร์ฟเวอร์ Prod แสดงว่ามีการใช้งานหน่วยความจำ 70%: total used free shared buffers cached Mem: 164923172 141171860 23751312 0 4555616 20648048 -/+ buffers/cache: 115968196 48954976 Swap: 8388600 0 8388600 แต่ฉันไม่พบกระบวนการที่ใช้หน่วยความจำฉันลองใช้topคำสั่งและกำลังแสดงกระบวนการโดยใช้หน่วยความจำเพียง 1.1 และ 5.4% ฉันจะค้นหากระบวนการที่ใช้หน่วยความจำได้อย่างไร ด้านล่างนี้คือผลลัพธ์คำสั่งยอดนิยม: 15085 couchbas 25 0 2784m 2.4g 40m S 183.7 1.5 299597:00 beam.smp 28248 tibco 18 0 124m 100m 3440 …
33 process  memory  top 

5
วิธีการใช้หน่วยความจำ (ใช้ RAM) โดยใช้คำสั่ง Linux
ฉันพยายามดึงหน่วยความจำที่ใช้ (RAM) เป็นเปอร์เซ็นต์โดยใช้คำสั่ง Linux cpanel ของฉันแสดงหน่วยความจำที่ใช้ซึ่งฉันต้องการแสดงบนหน้าเว็บเฉพาะ จากฟอรั่มฉันพบว่าหน่วยความจำที่ถูกต้องสามารถพบได้จากต่อไปนี้: free -m ผล: -/+ buffers/cache: 492 1555 - / + บัฟเฟอร์ / แคช: มีการใช้งานหน่วยความจำที่ถูกต้อง ฉันไม่ทราบวิธีการวิเคราะห์ข้อมูลนี้หรือหากมีคำสั่งต่าง ๆ เพื่อรับหน่วยความจำที่ใช้เป็นเปอร์เซ็นต์
30 centos  memory  cpanel 

1
Linux สูงสุดรองรับ Linux ได้อย่างไร
RAM สูงสุดที่ Linux รองรับได้คือเท่าไหร่ สมมติว่าฮาร์ดแวร์รองรับ / 64- บิต ในบรรดา Linux distros ทั้งหมด มันไปได้ถึง 16 exabytes หรือมีข้อ จำกัด กับ Windows ที่ฉันเชื่อว่าเป็น 192 กิกะไบต์?
29 linux  memory 

5
การทำให้ Linux อ่านสลับกลับเข้าไปในหน่วยความจำ
เคอร์เนล Linux สลับหน้าส่วนใหญ่ออกจากหน่วยความจำเมื่อฉันเรียกใช้แอปพลิเคชันที่ใช้หน่วยความจำกายภาพ 16GB ส่วนใหญ่ หลังจากที่แอปพลิเคชันเสร็จสิ้นทุกการกระทำ (การพิมพ์คำสั่งการสลับพื้นที่ทำงานการเปิดหน้าเว็บใหม่ ฯลฯ ) ใช้เวลานานมากในการทำให้เสร็จสมบูรณ์ มีวิธีบอกเคอร์เนล Linux ให้คัดลอกหน้าจากสลับกลับไปยังหน่วยความจำกายภาพโดยไม่ต้องสัมผัส (และรอ) แต่ละแอปพลิเคชันด้วยตนเองหรือไม่? ฉันใช้งานแอปพลิเคชั่นจำนวนมากดังนั้นการรอคอยจึงเจ็บปวดเสมอ ฉันมักจะใช้swapoff -a && swapon -aเพื่อทำให้ระบบตอบสนองได้อีกครั้ง แต่จะเป็นการลบหน้าที่ไม่ต้องการสลับดังนั้นพวกเขาจึงต้องเขียนอีกครั้งในครั้งต่อไปที่ฉันเรียกใช้สคริปต์ มีอินเตอร์เฟสของเคอร์เนลหรืออาจใช้ sysfs เพื่อสั่งให้เคอร์เนลอ่านหน้าทั้งหมดจากการสลับ? แก้ไข: ฉันกำลังมองหาวิธีที่จะทำให้การแลกเปลี่ยน swapcached ทั้งหมด (ขอบคุณ Derobert!) [PS serverfault.com/questions/153946/…และserverfault.com/questions/100448/…เป็นหัวข้อที่เกี่ยวข้อง แต่ไม่ได้ตอบคำถามว่าจะให้เคอร์เนล Linux คัดลอกหน้าจาก swap กลับไปยังหน่วยความจำได้อย่างไรโดยไม่ต้องสลับ swap]
28 linux  kernel  memory  swap  sysfs 

2
จะขึ้นบัญชีดำเซกเตอร์แรมที่ไม่ถูกต้องได้อย่างไรตามข้อบ่งชี้ข้อผิดพลาด MemTest86 +
MemTest86 + (รุ่นที่มาพร้อมกับ Ubuntu 13.04) กล่าวว่า Failing address: 002f796c48 - 759.5 MB ฉันควรระบุอะไรในmemmapพารามิเตอร์เคอร์เนลเพื่อข้ามพื้นที่นี้ ฉันลองใช้memtester 770MBแล้วมันก็บอกว่าทุกอย่างก็โอเคดังนั้นมันจึงไม่ได้ดูว่าตัวบ่งชี้ของ MemTest หมายถึงข้อผิดพลาดใน 759.5th MB ตั้งแต่เริ่มต้น วิธีการตีความตัวบ่งชี้ MemTest นี้เพื่อกำหนดค่าmemmap? ฉันไม่มีเงินที่จะซื้อ RAM ใหม่ตอนนี้และข้อผิดพลาดน่าจะเป็นโสดดังนั้นฉันหวังว่าฉันจะสามารถแทนที่ได้
28 linux  kernel  memory  ram 

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