คุณจะรู้ได้อย่างไรว่าโปรแกรมใดที่ใช้หน่วยความจำมากเกินไป?


59

เมื่อเร็ว ๆ นี้อูบุนตูก็ล้มเหลวกับฉัน ฉันคิดว่ามันเป็นเพราะfree -mหน่วยความจำไม่เพียงพอฉันจึงรันคำสั่งและพบว่าการใช้หน่วยความจำของฉันสูงมาก ดังนั้นฉันจึงวิ่งtopไปหาผู้ร้าย แต่กระบวนการที่แสดงนั้นใช้หน่วยความจำน้อยกว่า 1.5% ฉันจะรู้ได้อย่างไรว่าโปรแกรมใดที่ทำให้อูบุนตูล่ม / หน่วยความจำไม่เต็ม? ด้านล่างเป็นผลลัพธ์:

shafee@shafee-pc:~$ free -m
             total       used       free     shared    buffers     cached
Mem:          3824       3714        110          0        978       1954
-/+ buffers/cache:        780       3044
Swap:           99          0         99

shafee@shafee-pc:~$ top
top - 02:12:14 up  1:24,  2 users,  load average: 0.16, 0.42, 1.49
Tasks: 182 total,   1 running, 181 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.9%us,  1.9%sy,  0.3%ni, 79.3%id, 15.5%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:   3916708k total,  3803848k used,   112860k free,  1002308k buffers
Swap:   102396k total,        0k used,   102396k free,  2001852k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
 4200 root      20   0  289m  53m  38m S    2  1.4   1:06.45 Xorg               
 5590 shafee    20   0 19348 1368  956 R    2  0.0   0:00.01 top                
    1 root      20   0 24124 2136 1264 S    0  0.1   0:02.05 init               
    2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd           
    3 root      20   0     0    0    0 S    0  0.0   0:24.23 ksoftirqd/0        
    6 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/0        
    7 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/1        
    9 root      20   0     0    0    0 S    0  0.0   0:00.11 ksoftirqd/1        
   11 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/2        
   13 root      20   0     0    0    0 S    0  0.0   0:03.89 ksoftirqd/2        
   14 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/3        
   16 root      20   0     0    0    0 S    0  0.0   0:00.16 ksoftirqd/3        
   17 root       0 -20     0    0    0 S    0  0.0   0:00.00 cpuset             
   18 root       0 -20     0    0    0 S    0  0.0   0:00.00 khelper            
   19 root       0 -20     0    0    0 S    0  0.0   0:00.00 netns              
   21 root      20   0     0    0    0 S    0  0.0   0:00.01 sync_supers        
shafee@shafee-pc:~$

หรือเป็นเรื่องปกติที่จะมีหน่วยความจำว่าง 110mb และปัญหาของฉันเกี่ยวข้องกับสิ่งอื่นหรือไม่


ดูเหมือนว่าคุณจะไม่มีการแลกเปลี่ยนมากพอ แนะนำคือประมาณสองเท่าของขนาด RAM ของคุณ
Marco Ceppi

คำตอบ:


74

คุณอ่านผลลัพธ์freeไม่ถูกต้อง เคอร์เนล Linux ทำการจัดการหน่วยความจำของตัวเองจำนวนมากตามลำดับจึงจัดสรรมากกว่าที่ต้องการจริงดังนั้นจำนวน "Free Memory" ที่แท้จริงของคุณจะ3044อยู่ในคอลัมน์ "Free" ของ+/- Buffers/cacheบรรทัดทำให้มีการใช้งานจริงเพียง 780 MB

โดยค่าเริ่มต้นtopจะจัดเรียงตามปริมาณการใช้ CPU คุณสามารถกดShift+ Mเพื่อจัดเรียงตามเปอร์เซ็นต์ของหน่วยความจำที่ใช้ไป - ให้คุณเข้าใจได้ดียิ่งขึ้นว่าซอฟต์แวร์ใดที่ใช้หน่วยความจำที่จัดสรรให้กับเคอร์เนล


free -m
             total       used       free     shared    buffers     cached
Mem:          7873       3916       3956          0        231       1117
-/+ buffers/cache:       2567       5305
Swap:        12401          0      12401

และด้านบนมีหน่วยความจำเรียง:

top - 17:05:18 up 2 days,  1:40,  4 users,  load average: 0.21, 0.14, 0.11
Tasks: 237 total,   1 running, 234 sleeping,   0 stopped,   2 zombie
Cpu(s):  1.6%us,  0.8%sy,  0.1%ni, 96.7%id,  0.8%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8062420k total,  4013632k used,  4048788k free,   237204k buffers
Swap: 12699644k total,      292k used, 12699352k free,  1144752k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                          
 1632 root      20   0  884m 240m 6532 S    0  3.1   1:20.17 java                                                                                                                                                                             
 3911 marco     20   0 1011m 165m  22m S    0  2.1   9:20.62 chrome                                                                                                                                                                           
 3852 marco     20   0  770m 162m  45m S    0  2.1  14:59.59 chrome                                                                                                                                                                           
 1091 root      20   0  491m 160m 118m S    3  2.0  29:19.44 Xorg                                                                                                                                                                             
 1747 marco     20   0  659m 108m  34m S    1  1.4  18:43.92 compiz                                                                                                                                                                           
 3964 marco     20   0 1113m  99m  21m S    0  1.3  18:51.88 chrome                                                                                                                                                                           
 1759 marco     20   0  668m  94m  21m S    0  1.2   2:27.42 nautilus                                                                                                                                                                         
 3046 marco     20   0  788m  86m  26m S    0  1.1   1:22.96 evolution                                                                                                                                                                        
 1793 marco     20   0  647m  85m  18m S    0  1.1   0:12.74 shutter                                                                                                                                                                          
 1791 marco     20   0  404m  85m  13m S    0  1.1   5:19.51 bitcoin                                                                                                                                                                          
 2938 marco     20   0  809m  78m  31m S    0  1.0   1:01.07 empathy                                                                                                                                                                          
 9630 marco     20   0  265m  73m  19m S    1  0.9  12:41.52 skype                                                                                                                                                                            
 9618 marco     20   0  914m  64m  21m S    0  0.8   1:14.04 chrome                                                                                                                                                                           
 1777 marco     20   0  432m  64m  14m S    0  0.8   1:45.96 pastie

สุดท้ายเพื่อช่วยคุณวินิจฉัยซอฟต์แวร์ที่แท้จริงคืออะไรให้ลองส่ง-cค่าสถานะไปด้านบน: top -cซึ่งจะให้เส้นทางแบบเต็มชื่อและพารามิเตอร์ของคำสั่งที่ทำงานอยู่


ขอบคุณ: / ดูเหมือนว่าข้อขัดข้องของฉันเกี่ยวข้องกับอย่างอื่นแล้ว
shxfee

1
@Shafee คุณอาจต้องการเปิดคำถามใหม่โดยสรุปสิ่งที่ขัดข้องและให้ไฟล์บันทึกหรือรายละเอียดที่เกี่ยวข้องเพื่อดูว่าเราสามารถช่วยเหลือคุณในการแก้ไขข้อขัดข้องเหล่านั้นหรือไม่
Marco Ceppi

1
ว้าว. เรียนรู้สิ่งใหม่อีกครั้ง .... ไชโย marco อีกครั้ง!
andybleaden


4

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

http://www.zyxware.com/articles/4446/show-total-memory-usage-by-each-application-in-your-ubuntu-or-any-gnu-linux-system


มีประโยชน์ แต่ไม่แสดงหน่วยความจำทั้งหมดที่ใช้งานอยู่
nobar

3

คุณสามารถเริ่มต้นแอปพลิเคชัน gnome-system-monitor เป็นการดีที่สุดที่จะทราบว่า ram ใช้กับแอปใดและมีการใช้ cpu มากแค่ไหน คุณสามารถเปลี่ยนลำดับความสำคัญของกระบวนการเพื่อให้ทำงานได้เร็วขึ้นตัวอย่างเช่นหากคุณต้องการแปลงวิดีโอเป็นต้น


1
ec2 ไม่มี gnome-system-monitor บนบรรทัด cmd มีทางเลือกอื่นหรือไม่?
Siddharth

3
@Siddharth คุณสามารถใช้htopซึ่งเป็นรุ่นที่ดีกว่าของ กด F6 เพื่อจัดเรียงตามการใช้งาน CPU หรือ RAM
rosch

@Siddharth คุณยังคงสามารถติดตั้ง gnome-system-monitor บนระบบที่ไม่มี GUI (จะติดตั้งการพึ่งพากันเล็กน้อย) จากนั้นตราบใดที่คุณมีไคลเอนต์ Linux คุณสามารถเรียกใช้ผ่านการส่งต่อ X
Kris Jace

1

ในKubuntuฉันเพิ่งกดCtrl- Escแล้วเรียงลำดับสิ่งต่าง ๆ โดยใช้ฟิลด์ที่น่าสนใจ: หน่วยความจำ, CPU, ...

ป้อนคำอธิบายรูปภาพที่นี่


0

นี่เป็นคำถามที่ดี แต่ข้อมูลแสดงว่ามีหน่วยความจำมากมาย คุณควรตรวจสอบการใช้งานหน่วยความจำของคุณ

การตรวจสอบระบบที่ฉันชอบคือการconkyแสดงหน่วยความจำและเป็นส่วนหนึ่งของมัน:

Conky.gif

สายหน่วยความจำทั้งหมดแสดง 2.5 GiB จาก 7.4 GiB กำลังใช้งานอยู่

บรรทัดหน่วยความจำโดยละเอียดแสดง:

  • Web Contentใช้หน่วยความจำ 7% นี่เป็นโปรแกรมย่อยของ Firefox
  • Firefox ตัวเองใช้หน่วยความจำ 7%
  • ffmpegใช้หน่วยความจำ 3% นี่คือ.gifเครื่องบันทึกที่peekสร้างวิดีโอที่เรารับชม

Conky สามารถกำหนดค่าได้อย่างมากและเดสก์ท็อปของทุกคนดูแตกต่าง คุณสามารถ google conkyและรับ 787,000 ครั้ง

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