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

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

1
วิธีการตั้งค่าต่อการแลกเปลี่ยนกระบวนการสำหรับลินุกซ์?
/proc/sys/vm/swappinessเป็นสิ่งที่ดี แต่ฉันต้องการลูกบิดที่เป็นไปตามกระบวนการเหมือน/proc/$PID/oom_adjกัน เพื่อให้ฉันสามารถทำให้กระบวนการบางอย่างมีโอกาสน้อยกว่าผู้อื่นที่จะสลับหน้าของพวกเขาออกไป ซึ่งแตกต่างจากmemlock()นี้ไม่ได้ป้องกันโปรแกรมจากการถูกสลับออก เช่นเดียวniceกับผู้ใช้โดยค่าเริ่มต้นไม่สามารถทำให้โปรแกรมของพวกเขามีโอกาสน้อยลง แต่มีแนวโน้มที่จะเปลี่ยนเป็น /proc/$PID/swappiness_adjผมคิดว่าผมต้องเรียกสิ่งนี้ว่า
29 linux  process  swap 

2
นักเทียบท่า - คำเตือน: ไม่รองรับการ จำกัด การแลกเปลี่ยน
ฉันใช้นักเทียบท่า (1.9.1) บน Ubuntu 16.04 เมื่อฉันเรียกบรรทัดสุดท้ายของการส่งออกกล่าวว่าdocker infoWARNING: No swap limit support INFO[0781] GET /v1.21/info Containers: 0 Images: 0 Server Version: 1.9.1 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 0 Dirperm1 Supported: true Execution Driver: native-0.2 Logging Driver: json-file Kernel Version: 4.4.0-62-generic Operating System: Ubuntu 16.04.1 LTS (containerized) …
29 swap  docker 

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 

3
วัตถุประสงค์ของการแลกเปลี่ยนไฟล์หลายไฟล์คืออะไร
ระหว่างการติดตั้งลินุกซ์ distro ส่วนใหญ่ (ถ้าไม่ใช่ทั้งหมด) ฮาร์ดไดรฟ์จะถูกแบ่งพาร์ติชันเพื่อรวมพาร์ติชั่นการสลับโดยปริยาย เป็นไปได้ที่จะเปลี่ยนพฤติกรรมนี้ด้วย swapon -p priority ตามหน้า man, ลำดับความสำคัญคือ: PRIORITY Each swap area has a priority, either high or low. The default priority is low. Within the low-priority areas, newer areas are even lower priority than older areas. All priorities set with swapflags are high-priority, higher than …
28 swap 

2
นี่เป็นวิธีที่เพจจิ้งของ Linux ควรทำงานหรือไม่
เมื่อระบบลีนุกซ์ของฉันเข้าใกล้เพจจิ้ง (เช่นในกรณีของฉัน, RAM 16GB เกือบเต็ม, 16GB swap ว่างเปล่าอย่างสมบูรณ์) หากกระบวนการใหม่ X พยายามจัดสรรหน่วยความจำบางส่วนที่ระบบล็อคอย่างสมบูรณ์ นั่นคือจนกว่าจะมีจำนวนหน้าไม่สมบูรณ์ (wrt ขนาดรวมและอัตราของการร้องขอการจัดสรรหน่วยความจำของ X) ได้ถูกสลับออก โปรดสังเกตว่าไม่เพียง แต่ gui เท่านั้นที่ไม่ตอบสนองอย่างสมบูรณ์ แต่บริการพื้นฐานอย่าง sshd จะถูกบล็อกอย่างสมบูรณ์ เหล่านี้เป็นรหัสสองชิ้น (หยาบยอมรับ) ที่ฉันใช้เพื่อเรียกพฤติกรรมนี้ในทาง "วิทยาศาสตร์" มากขึ้น คนแรกที่ได้รับสองตัวเลข x, y จากบรรทัดคำสั่งและดำเนินการเพื่อจัดสรรและเริ่มต้นชิ้นจำนวนมากของ y ไบต์จนกว่า x ไบต์ทั้งหมดได้รับการจัดสรร และจากนั้นก็นอนหลับไปเรื่อย ๆ สิ่งนี้จะถูกใช้เพื่อนำระบบเข้าสู่เพจ #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> int main(int argc, …

2
เป็นไปได้ไหมที่จะเรียกใช้ OOM-killer ในการบังคับให้เปลี่ยน
เป็นไปได้หรือไม่ที่ระบบจะทำการสลับเพจที่ไม่ใช้งาน ( vm.swappiness) ล่วงหน้าแต่เรียกใช้ oom-killer เมื่อระบบไม่มี RAM (เมื่อเทียบกับหน่วยความจำหมด) และถูกบังคับให้สลับ เป้าหมายสูงสุดคือการป้องกันไม่ให้ระบบหยุดทำงานชั่วคราวเมื่อระบบเริ่มการฟาดดิสก์เนื่องจากความผิดพลาดของหน้าหลัก แต่ก็ยังปล่อยให้หน้าเว็บที่ไม่ได้ทำงานเปลี่ยน ความปรารถนาอีกประการหนึ่งคือการกำหนดค่าจำนวนหน่วยความจำสลับที่ระบบถูกบังคับให้ใช้ก่อนทริกเกอร์ oom-killer วิธีนี้ระบบสามารถจุ่มลงในการแลกเปลี่ยนเพียงเล็กน้อยตราบใดที่มันไม่ได้ไปไกลเกินไป หรือฉันอาจตั้งค่าขีด จำกัด ดังกล่าวเพื่อเรียกใช้ oom-killer ก่อนที่จะใช้ RAM ทั้งหมดดังนั้นจะมีที่ว่างสำหรับแคชของระบบไฟล์เสมอ ดูเหมือนว่ามันจะเป็นเรื่องยากที่จะทำ ดูเหมือนว่าคุณจะสามารถบอกนักฆ่าอุ๊ยเพื่อเรียกเมื่อระบบมีการใช้ X แรม / ฟรี แต่นี่คือเหตุผลที่ฉันถาม ฉันไม่รู้ เพื่อความกระจ่างแจ้งฉันไม่ต้องการปิดการสลับหรือปรับvm.swappinessพารามิเตอร์

1
วิธีทดสอบ swap partition
ฉันพยายามที่จะวิเคราะห์ segfaults แบบสุ่มบางอย่างบนเซิร์ฟเวอร์ที่ไม่มีหัวและสิ่งหนึ่งที่ดูเหมือนอยากรู้อยากเห็นคือพวกเขาดูเหมือนจะเกิดขึ้นภายใต้ความกดดันของหน่วยความจำเท่านั้นและขนาดการแลกเปลี่ยนของฉันจะไม่สูงกว่า 0 ฉันจะบังคับให้เครื่องสลับเพื่อให้แน่ใจว่าทำงานได้อย่างถูกต้องได้อย่างไร? orca ~ # free total used free shared buffers cached Mem: 1551140 1472392 78748 0 333920 1046368 -/+ buffers/cache: 92104 1459036 Swap: 1060280 0 1060280 orca ~ # swapon -s Filename Type Size Used Priority /dev/sdb2 partition 1060280 0 -1
23 linux  swap 

1
สลับพาร์ติชันใน LVM หรือไม่
ฉันสงสัยว่าการใส่ swap partition ลงในกลุ่มโลจิคัลวอลุ่มมีข้อบกพร่องใด ๆ (เช่นประสิทธิภาพ) หรือจะเป็น "แค่เดิม" เหมือนกับมีพาร์ติชันหลัก / โลจิคัลแยกต่างหากหรือไม่ ฉันชอบความจริงที่ว่ามันสามารถปรับขนาดได้ง่ายถ้าจำเป็น แต่ฉันไม่แน่ใจเกี่ยวกับข้อเสียที่เป็นไปได้ กรณีของการใช้งาน : CentOS 7 เว็บเซิร์ฟเวอร์

6
Linux สามารถ“ ใช้งาน RAM หมด” ได้หรือไม่?
ฉันเห็นหลายโพสต์ในเว็บของผู้คนเห็นได้ชัดว่าบ่นเกี่ยวกับ VPS โฮสต์โดยไม่คาดคิดกระบวนการฆ่าเพราะพวกเขาใช้แรมมากเกินไป เป็นไปได้อย่างไร? ฉันคิดว่าระบบปฏิบัติการสมัยใหม่ทั้งหมดให้ "infinite RAM" โดยใช้ disk swap สำหรับทุกอย่างที่มากกว่า RAM จริง ถูกต้องหรือไม่ อาจเกิดอะไรขึ้นถ้ากระบวนการ "ถูกฆ่าเนื่องจาก RAM ต่ำ"

4
วิธีโหลดแอปพลิเคชันที่ทำงานอยู่ทั้งหมดจากพื้นที่สว็อปไปเป็น RAM ได้อย่างไร
หากเดสก์ท็อปของฉันมีหน่วยความจำไม่เพียงพอและทำการแลกเปลี่ยนเป็นจำนวนมากฉันจะปล่อยให้ฟรีหรือฆ่าแอปพลิเคชันที่เสีย RAM แต่หลังจากนั้นเดสก์ท็อป / แอปพลิเคชันทั้งหมดของฉันถูกเปลี่ยนและช้ามากคุณรู้วิธี "unswap" (โหลดจากพื้นที่สว็อปเป็น RAM) เดสก์ท็อป / แอปพลิเคชันของฉันหรือไม่
20 linux  memory  swap  desktop 

1
สิ่งที่กำหนดขนาดของ tmpfs? จะเกิดอะไรขึ้นเมื่อมันเต็ม
สิ่งที่กำหนดขนาดของtmpfs? (บนเครื่องของฉันมันอยู่ใน/dev/shm) ฉันสามารถดูรายการใน/etc/fstabแต่ไม่มีขนาดของสัญกรณ์ เมื่อตรวจสอบด้วยdf -hดูเหมือนว่าจะมีขนาดครึ่งหนึ่งของหน่วยความจำกายภาพที่ติดตั้งในระบบ นี่เป็นพฤติกรรมเริ่มต้นหรือไม่ นอกจากนี้จะเกิดอะไรขึ้นถ้ามันเต็ม มันขยายแบบไดนามิกบังคับให้โปรแกรมที่ทำงานอื่น ๆ เข้าสู่swap? ไม่tmpfsตัวเองเดินเข้ามาในswapพาร์ทิชัน? ในที่สุดความสำคัญในหน่วยความจำtmpfsหรือแอพพลิเคชั่นคืออะไร? เช่นถ้าฉันมีtmpfsเพียงพอ (เช่น 40% ของหน่วยความจำกายภาพ) และฉันมีโปรแกรมที่ต้องการ 70% ของหน่วยความจำกายภาพที่หนึ่งได้รับความสำคัญ
20 linux  swap  tmpfs 

2
Linux: การแลกเปลี่ยนทั้งหมดที่ใช้ = swap ที่ใช้โดยกระบวนการ +?
ดังนั้นฉันกำลังพยายามตรวจสอบว่าการใช้ swap มาจากไหนในระบบที่มีการใช้ swap สูง: # free total used free shared buffers cached Mem: 515324 508800 6524 0 4852 27576 -/+ buffers/cache: 476372 38952 Swap: 983032 503328 479704 การเพิ่มค่า swap ที่ใช้ต่อกระบวนการ: # for proc in /proc/*; do cat $proc/smaps 2>/dev/null | awk '/Swap/{swap+=$2}END{print swap "\t'`readlink $proc/exe`'"}'; done | sort -n …
17 linux  memory  swap 

3
ฉันจะตั้งค่าไฟล์สลับที่เข้ารหัสใน Linux ได้อย่างไร
2017 คำเตือน! คำตอบที่ได้รับการยอมรับนั้นดูเหมือนว่าจะใช้งานได้ แต่ด้วยเมล็ดข้าวฉันได้ค้นพบว่าระบบจะหยุดทำงานทันทีที่มันเริ่มทำการแลกเปลี่ยน หากคุณพยายามใช้ไฟล์ swap ที่เข้ารหัสตรวจสอบให้แน่ใจว่าได้ทำการสลับไฟล์อย่างถูกต้อง ฉันใช้เวลานานในการหาสาเหตุที่ระบบของฉันยังคงล็อคอยู่โดยไม่มีเหตุผลที่ชัดเจน ฉันกลับไปใช้การแลกเปลี่ยนพาร์ติชันที่เข้ารหัสซึ่งทำงานได้อย่างถูกต้อง ฉันจะตั้งค่าไฟล์สลับที่เข้ารหัส (ไม่ใช่พาร์ติชัน) ใน Linux ได้อย่างไร เป็นไปได้ไหม คำแนะนำทั้งหมดที่ฉันได้พบพูดคุยเกี่ยวกับพาร์ทิชันการเข้ารหัสที่เข้ารหัส แต่ฉันไม่มีพาร์ติชันการสลับและฉันไม่ต้องการแบ่งพาร์ติชันดิสก์ของฉันอีกครั้ง ฉันไม่ต้องการการสนับสนุน suspend-to-disk ดังนั้นฉันต้องการใช้ปุ่มสุ่มในการบูตแต่ละครั้ง ฉันใช้ไดรฟ์ข้อมูลที่โฮสต์ไฟล์TrueCryptอยู่แล้วสำหรับข้อมูลของฉัน แต่ฉันไม่ต้องการใส่การแลกเปลี่ยนลงในโวลุ่มนั้น ฉันไม่ได้ตั้งค่าโดยใช้ TrueCrypt สำหรับไฟล์ swap หากมีวิธีแก้ไขที่ดีกว่า ฉันใช้Arch Linuxกับเคอร์เนลเริ่มต้นถ้าเป็นเช่นนั้น

2
วิธีการตรวจสอบสิ่งที่อยู่ในการแลกเปลี่ยน?
ในระบบของฉันฉันมีจำนวน swap ที่ใช้: undefine@uml:~$ free total used free shared buffers cached Mem: 16109684 15848264 261420 633496 48668 6096984 -/+ buffers/cache: 9702612 6407072 Swap: 15622140 604 15621536 จะตรวจสอบสิ่งที่แลกเปลี่ยนได้อย่างไร ฉันพยายามตรวจสอบผ่านกระบวนการ แต่สำหรับ pid ทุกระบบ VmSwap คือ 0: undefine@uml:~$ awk '/VmSwap/ {print $2}' /proc/*/status |uniq 0 มีอะไรในการสลับ? ฉันคิดเกี่ยวกับ tmpfs - แต่ฉันอ่านไฟล์ทั้งหมดใน tmpfs-es อีกครั้งและมันไม่ได้ล้างขนาดของ swap
15 linux  swap 

2
ฉันจะเพิ่มพื้นที่สว็อปสูงสุดใน Mac OS X ได้อย่างไร
ใน Mac OS X Yosemite 10.10.5 เมื่อฉันพยายามเรียกใช้การคำนวณที่จำเป็นต้องจัดสรรและใช้หน่วยความจำ 128 GB (เป็นโปรแกรมบรรทัดคำสั่งที่เขียนด้วย C) เคอร์เนลจะฆ่ากระบวนการของฉันด้วยอคติอย่างรุนแรง รายการบันทึกคอนโซลนี้เป็นตัวอย่างหนึ่งอินสแตนซ์: 9/25/15 7: 08: 40.000 PM เคอร์เนล [0]: การแลกเปลี่ยนต่ำ: ฆ่า pid 6202 (huffgrp) การคำนวณใช้งานได้ดีและใช้เวลาพอสมควรเมื่อจัดสรรและใช้หน่วยความจำ 64 GB Mac ของฉันมี RAM ขนาด 32 GB และพื้นที่ว่างบนฮาร์ดไดรฟ์ ฉันยังลองใช้มันใน Mac เครื่องอื่นที่มี RAM ขนาด 8 GB ซึ่งการคำนวณ 64 GB ก็ทำงานได้ดีเช่นกันใช้เวลานานขึ้น แต่การคำนวณ 128 GB ก็ถูกฆ่าโดยเคอร์เนลด้วยวิธีเดียวกัน …

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