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

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

3
เป็นไปได้หรือไม่ที่จะกำหนดขีด จำกัด แบบนุ่มนวลบางอย่างเกี่ยวกับการใช้หน่วยความจำของกระบวนการ?
ฉันคิดว่ามันไม่ใช่ปัญหาที่ผิดปกติ: กระบวนการหนึ่งจัดสรรหน่วยความจำจำนวนมาก (ไม่ว่าจะเกิดจากข้อผิดพลาดของหน่วยความจำรั่วเพราะคุณพยายามประมวลผลไฟล์อินพุตที่มีขนาดใหญ่หรืออะไรก็ตาม) RAM เต็มและบางจุด Linux ต้องสลับเพื่อสลับ ทีนี้บางครั้งมันก็เป็นทางเลือกสุดท้าย: ถ้าฉันมีการคำนวณราคาแพงฉันไม่ต้องการที่จะสูญเสียข้อมูลถ้าในตอนท้ายฉันหมด RAM อย่างไรก็ตามบ่อยครั้งกว่า (ในประสบการณ์ของฉัน) การใช้หน่วยความจำไม่ได้ จำกัด โดยการโกงอาจกระบวนการรถ นั่นคือฉันไม่ได้จบลงด้วยข้อมูลที่ต้องการน้อยกว่าที่ถูกย้ายไปสับเปลี่ยน แต่ระบบปฏิบัติการถูกบังคับให้สลับโหลดข้อมูลอย่างกะทันหัน และน่าเสียดายที่ไม่เพียง แต่ทำลายกระบวนการที่กระทำผิดกฎหมายอย่างหนัก แต่สามารถนำระบบทั้งหมดมาสู่ความนิ่ง (มันไม่เลวร้ายนักในเครื่องที่ใช้ SSD แต่ OTOH ทำให้ฉันกังวลว่าการเขียนกิกะไบต์และกิกะไบต์ของข้อมูลขยะอาจเป็นไปได้ไหม ระยะยาวเป็นอันตรายต่อเซลล์แฟลช) จนกว่าฉันจะสังเกตเห็นปัญหาและฆ่ากระบวนการด้วยตนเอง (เมื่อใช้เวลาจริงนาทีจนกระทั่งฉันได้เข้าสู่ระบบเสมือน terminal!) ครึ่งเซสชั่นการทำงานของฉันในการแลกเปลี่ยนและฉันต้องรอสักครู่จนกว่าระบบจะทำงานได้อย่างราบรื่น อีกครั้ง มีวิธีแก้ไขปัญหา draconic หนึ่งวิธี: บังคับใช้ขีด จำกัด หน่วยความจำฮาร์ด แต่การทำทั้งระบบนี้บางครั้งจะทำให้กระบวนการที่ฉันต้องการอยู่นิ่งและถ้าฉันต้องทำเองulimitก่อนที่จะเริ่มขั้นตอนการละเมิด ... ดีฉันมักจะลืมจนกว่ามันจะสายเกินไป วิธีแก้ปัญหาที่เป็นไปได้ที่ฉันมีความสุขมากขึ้น: หากกระบวนการใดเกินกว่าการใช้งานหน่วยความจำที่แน่นอนก็จะลดปริมาณลงอย่างผิดเพี้ยนเพื่อให้ระบบส่วนที่เหลือตอบสนองได้ หากกระบวนการใดเกินกว่าการใช้หน่วยความจำที่แน่นอนก็เป็นSIGSTOPเหตุให้ฉันมีเวลาคิดออกว่าจะทำอย่างไรต่อไป หากกระบวนการเข้าใกล้ขีด จำกัด RAM ฉันจะได้รับคำเตือนก่อนที่การแลกเปลี่ยนจะเริ่มขึ้น มีวิธีใดบ้างที่จะรับพฤติกรรมเช่นนี้หรือคล้ายกัน?
10 linux  memory  swap 

1
หน่วยความจำที่ไม่สามารถอ้างสิทธิ์ได้ถูกจัดสรรให้กับแผ่นพื้นซึ่งพิจารณาว่าใช้แล้วหรือมีแคชอยู่หรือไม่
หลังจากการประเมิน / proc / meminfo ฉันเห็นข้อมูลต่อไปนี้: $cat /proc/meminfo MemTotal: 197852592 kB MemFree: 64755992 kB MemAvailable: 65655112 kB Buffers: 4388 kB Cached: 759952 kB SwapCached: 0 kB Active: 649472 kB Inactive: 308340 kB Active(anon): 193840 kB Inactive(anon): 25316 kB Active(file): 455632 kB Inactive(file): 283024 kB Unevictable: 0 kB Mlocked: 0 kB …

3
หลังจากการค้นคว้ายังคงสับสนเกี่ยวกับการตรวจสอบการใช้ RAM
ฉันอ่านบทความนี้ซึ่งอธิบายวิธีการต่าง ๆ ในการตรวจสอบการใช้ RAM ของคุณ อย่างไรก็ตามฉันไม่สามารถปรับวิธีการต่าง ๆ และไม่ทราบว่าวิธีใดถูกต้อง เมื่อฉันเข้าสู่ระบบครั้งแรกฉันได้รับการต้อนรับด้วยหน้าจอเช่นนี้: System information as of Sun Apr 28 21:46:58 UTC 2013 System load: 0.0 Processes: 76 Usage of /: 15.6% of 7.87GB Users logged in: 1 Memory usage: 41% IP address for eth0: Swap usage: 0% สิ่งนี้ชี้ให้เห็นว่าฉันใช้ RAM 41% ซึ่งค่อนข้างสูงเนื่องจากเซิร์ฟเวอร์ไม่ค่อยทำอะไร หรือหมายเลขนั้นอ้างถึงบางสิ่งบางอย่างนอกเหนือจาก RAM? …
10 linux  memory 

1
ส่วนไหนของเอลฟ์ที่ปฏิบัติการได้ถูกโหลดเข้าสู่หน่วยความจำและที่ไหน
สิ่งที่ฉันรู้แล้ว: ปฏิบัติการของ ELF นั้นมีหลายส่วนโดยเฉพาะอย่างยิ่งส่วน. text และ. data ที่ถูกโหลดเข้าสู่หน่วยความจำเนื่องจากเป็นส่วนหลักของโปรแกรม แต่สำหรับโปรแกรมที่ทำงานมันต้องการข้อมูลเพิ่มเติมโดยเฉพาะเมื่อเชื่อมโยงแบบไดนามิก สิ่งที่ฉันสนใจคือส่วนต่างๆเช่น. plt, .got, .dynamic, .dynsym, .dynstr etcetera ส่วนต่างๆของเอลฟ์ที่รับผิดชอบการเชื่อมโยงฟังก์ชั่นไปยังที่อยู่ จากสิ่งที่ฉันสามารถคิดได้จนถึงตอนนี้ก็คือสิ่งต่าง ๆ เช่น. symtab และ. strtab ไม่ได้รับการโหลด (หรือไม่อยู่) ในหน่วยความจำ แต่ .dynsym และ. dynstr ถูกใช้โดย linker หรือไม่ พวกเขาอยู่ในความทรงจำหรือไม่? ฉันสามารถเข้าถึงได้จากรหัสโปรแกรมหรือไม่ และมีส่วนใดของปฏิบัติการที่อยู่ในหน่วยความจำเคอร์เนล? ความสนใจของฉันในเรื่องนี้ส่วนใหญ่เป็นนิติวิทยาศาสตร์ แต่ข้อมูลใด ๆ ในหัวข้อนี้จะช่วยได้ ทรัพยากรที่ฉันได้อ่านเกี่ยวกับตารางเหล่านี้และการเชื่อมโยงแบบไดนามิกอยู่ในระดับสูงมากขึ้นพวกเขาอธิบายเฉพาะการทำงานไม่ใช่สิ่งที่เป็นประโยชน์เกี่ยวกับเนื้อหาในหน่วยความจำ แจ้งให้เราทราบหากมีข้อสงสัยเกี่ยวกับคำถามของฉัน

2
dd คือ = / dev / urandom ของ = / dev / mem ปลอดภัยหรือไม่
มันทำอะไรกันแน่ ฉันไม่เข้าใจว่าคุณสามารถเข้าถึงหน่วยความจำพื้นฐานด้วยวิธีนี้ได้อย่างไร ... ดูเหมือนว่าจะแปลก ปลอดภัยไหม dd if=/dev/urandom of=/dev/mem
10 ubuntu  memory  dd  random 

2
หน่วยความจำที่เหลืออยู่ของ vm.overcommit_ratio จะไปไหน
ถ้าฉัน overcommit หน่วยความจำปิดการใช้งานโดยการตั้งค่าvm.overcommit_memoryที่จะ2ตามค่าเริ่มต้นระบบจะอนุญาตให้มีการจัดสรรหน่วยความจำได้ถึงมิติของการแลกเปลี่ยน + 50% ของหน่วยความจำกายภาพตามที่อธิบายไว้ที่นี่ ฉันสามารถเปลี่ยนอัตราส่วนโดยการแก้ไขvm.overcommit_ratioพารามิเตอร์ สมมติว่าฉันตั้งไว้ที่ 80% ดังนั้นอาจใช้หน่วยความจำกายภาพ 80% คำถามของฉันคือ: ระบบจะทำอะไรกับส่วนที่เหลืออีก 20% ทำไมพารามิเตอร์นี้จำเป็นต้องมีในตอนแรก ทำไมฉันไม่ควรตั้งไว้ที่ 100% เสมอ

1
/ proc / [pid] / สถานะใช้ kB เสมอหรือไม่
โดยเฉพาะอย่างยิ่งprocจะแสดงรายการค่า VmRSS ในทุกครั้งkBหรือไม่ ฉันไม่พบคำตอบที่ชัดเจนในเอกสารแม้ว่ามันจะปรากฏว่ามันติดอยู่กับหนึ่งหน่วย
10 memory  proc 

2
เพิ่มประสิทธิภาพ ZFS ในความเป็นไปได้ของสภาพแวดล้อม RAM ต่ำหรือไม่
ขณะนี้ฉันกำลังตั้งค่าเซิร์ฟเวอร์ไฟล์และมาถึงจุดของการตั้งค่าไดรฟ์ข้อมูลจริง ระบบมี 4 ไดรฟ์ (หนึ่งดิสก์ OS, 3 ดิสก์ข้อมูล) ดิสก์ของระบบปฏิบัติการถูกจัดรูปแบบเป็น ext4 และจะไม่ถูกเพิ่มลงในพูล ZFS (ถ้าฉันเลือกที่จะเรียกใช้ ZFS) ข้อกังวลหลักของฉันคือความถูกต้องของข้อมูลและความเสี่ยงขั้นต่ำของการสูญหายของข้อมูล สำหรับ ZFS นี้ดูเหมือนจะเป็นตัวเลือกที่สมบูรณ์แบบเนื่องจากมีเวอร์ชั่นที่เสถียรสำหรับ Linux (ถูกต้อง?) และรองรับการทำสำเนาข้อมูลการรวมกำไรและการโจมตีซึ่งฮาร์ดไดรฟ์ไม่จำเป็นต้องมีขนาดเท่ากัน แต่นี่คือปัญหาของฉัน เซิร์ฟเวอร์มี RAM เพียง 2GB และไม่สามารถอัปเกรดได้ในอนาคตอันใกล้และ ZFS ที่เข้าถึงได้จริงเพียง 1.5 จะสามารถเข้าถึงได้จริงหลังจากที่ฉันติดตั้งบริการอื่น ๆ ทั้งหมด ลูกค้าสูงสุดประมาณ 10 รายจะใช้งานในแต่ละครั้ง (มากกว่า 4 โดยเฉลี่ย) ต่ำเกินไปที่จะถือว่าปลอดภัยหรือไม่ จากสิ่งที่ฉันเข้าใจ ZFS สามารถล้มเหลวในสถานการณ์ RAM ต่ำและใช้พูลด้วย ฉันได้ยินความคิดเห็นที่ขัดแย้งกันว่าการแลกเปลี่ยนจะช่วยในการบรรเทาปัญหานี้หรือไม่ (ฉันมีไดรฟ์เฉพาะสำหรับการแลกเปลี่ยน 20 GB) มีใครเคยสูญเสียข้อมูลกับ …
10 linux  memory  zfs 

1
การติดตามการใช้หน่วยความจำ“ ที่หายไป” ใน linux
ในเคอร์เนล Arch 3.6.7 x86_64 ฉันพยายามพิจารณาการใช้งานหน่วยความจำของระบบซึ่งยิ่งฉันดูมันยิ่งดูเหมือนว่าจะเป็นรู (ในการบัญชีของหน่วยความจำที่ใช้แล้วไม่ใช่รูใน การใช้งานของ) นี่เป็นระบบที่ถูกบูตใหม่ ด้วยการทำงานที่ไม่มากนอกจาก systemd และ sshd เพื่อให้ง่าย $ ps aux | sort -n -k6 ... root 316 0.0 0.0 7884 812 tty1 Ss+ 14:37 0:00 /sbin/agetty --noclear tty1 38400 matt 682 0.0 0.0 24528 820 pts/0 S+ 15:09 0:00 sort -n -k6 dbus 309 …

2
วิธี จำกัด การใช้งานหน่วยความจำของแอปพลิเคชัน
ฉันใช้เวลา 2 ชั่วโมงอ่านคำถามเกี่ยวกับเรื่องนี้ แต่ก็ยังมีความเข้าใจผิดอยู่บ้าง ฉันมีกระบวนการนี้: USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1452 0.4 1.8 1397012 19308 ? Sl 04:23 3:48 ./transaction_server นี่แสดงให้เห็นว่ามันใช้19.3Mbหน่วยความจำระบบ (ฉันไม่มีไฟล์สลับ) รอบ ๆหน่วยความจำระบบ1.8%ทั้งหมด 1GBขนาดเสมือนคือ1.39GB?!? ฉันได้อ่านแล้วว่าulimit -mใช้งานไม่ได้ คนใช้ulimit -vเช่นการตั้งค่าหน่วยความจำเสมือนสำหรับกระบวนการ หน่วยความจำเสมือนนี้เป็นรายการ VSZ หนึ่งรายการpsหรือไม่ ฉันควรตั้งค่าเท่าใดหากฉันต้องการ จำกัด กระบวนการนี้ให้ใช้100MBหน่วยความจำระบบมากที่สุด ฉันได้อ่านเอกสารสำหรับsetrlimitและดูเหมือนว่าถูกต้อง: RLIMIT_AS This is the maximum size of …
10 linux  memory 

2
ฉันจะถ่ายโอนข้อมูลหน่วยความจำระบบเต็มได้อย่างไร
หลังจากเริ่ม VirtualBox คอมพิวเตอร์เริ่มทำงานช้าลงและหยุดทำงานอย่างสมบูรณ์เนื่องจาก OOM โดยปกติแล้ว OOM ควรเริ่มต้นกระบวนการฆ่าเพื่อเพิ่มพื้นที่ว่าง แต่สิ่งนี้ไม่ได้เกิดขึ้น (นี่เป็นครั้งที่สองที่ฉันมีประสบการณ์นี้) ฉันมีบางงานที่สำคัญยังไม่ได้บันทึกในโปรแกรมแก้ไขข้อความดังนั้นผมหวังที่จะพบว่ามันกลับมาอยู่ในแรมระบบหลังจากที่ฆ่ากระบวนการทั้งหมดในคอนโซลปัจจุบันใช้+SysRq Kเครื่องดังกล่าวเป็นแล็ปท็อปที่มี 8 GiB RAM ใช้ Linux x86_64 3.7.5 พร้อม SSD เป็นดิสก์เป้าหมาย ความพยายามครั้งแรกของฉันคือdd if=/dev/mem of=memoryแต่สิ่งนี้ล้มเหลวหลังจากอ่านข้อมูล 1MiB ต่อไปฉันลองdd if=/dev/fmem of=memory bs=1Mแต่สิ่งนี้หยุดลงหลังจากอ่าน 3010461696 ไบต์ (ตรง 2871 MiB) หลังจากดูที่/proc/mtrr(แสดงด้านล่าง) skip=4096ฉันตัดสินใจที่จะลองเพิ่ม ในที่สุดสิ่งนี้ก็ช้าลงโดยการอ่านด้วยความเร็วเพียง 3 MiB / วินาทีดังนั้นฉันจึงขัดจังหวะ (ให้ไฟล์ 5.8 GiB) (อย่างน้อย 100 MiB ล่าสุดของไฟล์มีFFs) reg01: base=0x000000000 …

5
สลับการใช้งานสูงเกินไปหรือไม่
ฉันมีกล่อง Debian Sid ติดตั้งใหม่ประมาณเดือนที่แล้วโดยไม่มีแอปเดสก์ท็อปที่ทำงานอยู่ในขณะนี้ คำสั่งใด ๆ ที่ฉันพยายามเรียกใช้ (ผ่าน ssh) ทำให้ฮาร์ดดิสก์ทำงานหนักมาก ระบบทำงานได้อย่างไร้ที่ติเมื่อสองสามสัปดาห์ก่อนขณะที่ใช้งาน Ubuntu 8.04 ฮาร์ดแวร์ควรใช้ได้เครื่องมือที่ชาญฉลาดรายงานว่าไม่มีปัญหาหรือตรวจสอบหน่วยความจำ ฯลฯ ฉันสงสัยว่าปัญหาเกี่ยวข้องกับการสลับเปลี่ยน: $ free -h total used free shared buffers cached Mem: 998M 986M 12M 0B 464K 904M -/+ buffers/cache: 81M 917M Swap: 511M 511M 0B สิ่งทดสอบฉันเห็นว่าฉันไม่สามารถปิดใช้งานการสลับโดยไม่ต้องรีบูตเครื่องแม้ว่าจะใช้ฟิสิคัลแรมส่วนใหญ่สำหรับแคช: # swapoff -a swapoff: /swapfile: swapoff failed: Cannot allocate …
9 linux  debian  memory  swap 

3
บุกเข้าไปในกล่อง? (หน่วยความจำ & ดิสก์)
ฉันมี VPS ฉันอาจเข้ารหัสพาร์ทิชันของฉัน แต่ฉันยังไม่ได้ลอง บริษัท VPS ของฉันฉันเชื่อว่าสามารถรีเซ็ตรหัสผ่านรูทของฉันได้แม้ว่าคีย์ SSH เดียวที่ฉันเห็นคือของฉันเอง encfsด้วยข้อมูลทั้งหมดของฉันฉันได้มันเข้ารหัสด้วย ในกรณีที่แฮ็กเกอร์เข้าถึงบางประเภทencfsสามารถติดตั้งไดรฟ์ได้เท่านั้นหากรหัสผ่านของฉันถูกต้อง (คีย์ SSH จะไม่ติดตั้งใหม่การรีเซ็ตรหัสผ่านรูทจะไม่ถูกเมาท์เนื่องจากรหัสผ่านใหม่เป็นรหัสผ่านไม่ถูกต้อง) คำถามของฉันคือโฮสต์ VPS ของฉันสามารถบุกเข้าไปในกล่องของฉันได้หรือไม่ ข้อมูลจะถูกเข้ารหัสทางกายภาพ ฉันเชื่อว่ารูทสามารถเปลี่ยนแปลงได้โดยไม่ต้องรีเซ็ตกล่องหรือไม่ ถ้าเป็นเช่นนั้นพวกเขาสามารถเข้าถึงระบบไฟล์ที่ถูกเมานต์แล้วได้หรือไม่? หากผู้ใช้รายอื่นที่ไม่มีสิทธิ์ลงชื่อเข้าใช้ผู้ใช้สามารถทำบางสิ่งเพื่อเข้าถึง ram และการถ่ายโอนข้อมูลที่สำคัญได้หรือไม่ โฮสต์ VPS สามารถอ่านเนื้อหาของ RAM ของฉันได้อย่างง่ายดายหรือไม่ หมายเหตุ: นี่เป็นสมมุติฐาน ฉันกำลังคิดว่าถ้าฉันมีลูกค้ารายใหญ่ฉันต้องการทราบว่าความปลอดภัยที่ฉันสามารถสัญญาได้มากแค่ไหน ฉันไม่อยากฝากกล่องที่บ้านหรือมีท่อเพื่อรองรับ

2
MySQL ถูกฆ่าโดยระบบปฏิบัติการทุก ๆ 25 วัน
ประมาณ 4 เดือนที่ผ่านมาเราอพยพมาจากMS SQL Serverเพื่อMySQL 5.5 ตั้งแต่นั้นมาเราประสบปัญหาครั้งหนึ่งประมาณ 25 วันนับตั้งแต่ที่ CentOS มีหน่วยความจำไม่เพียงพอและด้วยเหตุนี้มันจึงฆ่า MySQL ปลอดภัยของ MySQL รีสตาร์ท mysql ดังนั้นฐานข้อมูลจะลดลงอย่างสมบูรณ์เพียงหนึ่งหรือสองนาที แต่เราสามารถประสบปัญหาประสิทธิภาพและการเชื่อมต่อขาดหายไปเป็นเวลาหลายชั่วโมงก่อนที่ CentOS จะฆ่าเธรด mysqld เรามักจะเห็นปัญหาตั้งแต่ 1:00 ถึง 5:00แต่ไม่เคยในระหว่างวันที่การจราจรสูงที่สุดซึ่งเป็นสิ่งที่ยุ่งเหยิงจริงๆเกี่ยวกับสถานการณ์นี้ แม้ว่าปกติแล้วจะเห็นปัญหาการเชื่อมต่อและประสิทธิภาพตั้งแต่ 1am ถึง 5am แต่โดยทั่วไปแล้วเซิร์ฟเวอร์ mysql จะถูกฆ่าในช่วงเวลา 4:00 น. หรือ 5:00 น. ในเวลาเดียวกัน mysqldump ก็ทำงาน เราคิดว่าmysqldumpอาจเป็นผู้กระทำผิด อย่างไรก็ตามมันเริ่มต้นเวลา 4:00 น. ทุกวัน แต่เราพบปัญหาเร็วถึงตีหนึ่งในบางคืน นอกจากนี้ยังmysqldumpมีการทำงานกับ--optสวิทช์จึงไม่ควรบัฟเฟอร์ข้อมูลจำนวนมากในระหว่างขั้นตอนการถ่ายโอนข้อมูล นอกจากนี้เรายังพิจารณาแอพสำรองข้อมูลที่เราใช้ซึ่งทำให้ไฟล์ดัมพ์และสำรองข้อมูลไว้ในเทป เราเปลี่ยนเวลาที่ทำงานเป็น 6.00 …
9 mysql  memory  centos 

1
เป็นตารางไฟล์ในระบบไฟล์หรือในหน่วยความจำหรือไม่?
ในบริบทของตารางควบคุมระบบปฏิบัติการคำว่า "ตารางไฟล์" อ้างถึงโครงสร้างข้อมูลที่เป็นส่วนหนึ่งของระบบไฟล์หรือที่อยู่ในหน่วยความจำหลัก (และในกรณีที่ฉันถือว่ามันจะมีการอ้างอิงไฟล์ที่เปิดเท่านั้น) ? หนังสือเรียนของฉัน1บอกว่า ตารางจัดเตรียมข้อมูลเกี่ยวกับการมีอยู่ของไฟล์ตำแหน่งของพวกเขาในหน่วยความจำรองสถานะปัจจุบันและคุณลักษณะอื่น ๆ ข้อมูลนี้อาจได้รับการดูแลรักษาและใช้งานโดยระบบจัดการไฟล์เป็นจำนวนมากซึ่งในกรณีนี้ระบบปฏิบัติการมีความรู้เกี่ยวกับไฟล์เพียงเล็กน้อยหรือไม่มีเลย นอกจากนี้ระบบจัดการไฟล์คืออะไร? นั่นหมายความว่าระบบไฟล์หรือไม่ 1 Stallings, ระบบปฏิบัติการ , 7 th ed., p. 127

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