Làm thế nào để điều tra việc sử dụng bộ nhớ kernel cao?


131

Tôi đã sử dụng MBP của mình (với 16GB RAM) như bình thường và không có màu xanh. Tôi có cửa sổ bật lên này:

Hệ thống của bạn đã hết bộ nhớ ứng dụng.

Để tránh sự cố với máy tính của bạn, hãy thoát khỏi mọi ứng dụng bạn không sử dụng.

Buộc thoát ứng dụng - Hệ thống của bạn đã hết bộ nhớ ứng dụng - ảnh chụp màn hình

Tôi rõ ràng đã đóng vài cái mà tôi có thể, nhưng nó không giúp được gì.

Sau khi kiểm tra bộ nhớ, có vẻ như tác vụ kernel đã ăn bộ nhớ hoán đổi 7GB và 22,36GB đã được sử dụng trong tổng số 23GB (rõ ràng là trường hợp này). Tuy nhiên, tôi vẫn còn 20 GB dung lượng trống trên SDD của mình.

Bộ nhớ - Menu iStat - ảnh chụp màn hình

Trình giám sát hoạt động không giúp được gì nhiều trong khi OS X của tôi đang hướng đến sự hủy diệt.

Trình khám phá quy trình

kernel_task - Thẻ nhớ - ảnh chụp màn hình kernel_task - Tab thống kê - ảnh chụp màn hình

My topstats trước khi đóng băng hạt nhân của tôi:

Processes: 344 total, 2 running, 5 stuck, 337 sleeping, 2580 threads                                                                                                                         19:23:56
Load Avg: 1.56, 1.62, 2.09  CPU usage: 3.51% user, 8.47% sys, 88.1% idle   SharedLibs: 46M resident, 0B data, 6572K linkedit. MemRegions: 757970 total, 2139M resident, 56M private, 907M shared.
PhysMem: 9410M used (6198M wired), 556M unused. VM: 1155G vsize, 1311M framework vsize, 112872658(320) swapins, 122668389(0) swapouts. Networks: packets: 299419263/363G in, 142126838/14G out.
Disks: 58970173/1079G read, 20012389/1120G written.

Cuối cùng, OS X của tôi bị đóng băng và tôi phải thực hiện thiết lập lại cứng, sửa chữa SDD của mình ở chế độ khôi phục và sửa lỗi sau đó (khôi phục công việc bị mất, sửa lỗi xung đột ứng dụng, kiểm tra thư mục bị mất + tìm thấy, các tab Chrome / Terminal bị mất, đau đầu, v.v. ).

Câu hỏi của tôi là, làm cách nào để kiểm tra việc sử dụng bộ nhớ cao của tác vụ kernel hoặc làm thế nào để xử lý đúng tình huống đó? Tôi đã thử lấy Mẫu với Trình giám sát hoạt động, nhưng nó bị mờ đi.


Chi tiết MBR của tôi: Intel Core i7 tốc độ 2,3 GHz (cuối năm 2013) với RAM 16 GB. HĐH X: 10.9.5


1
@klanomath Thông thường tôi có rất nhiều đóng băng, đặc biệt là với thời gian hoạt động dài và đây chỉ là đóng băng kernel mà không rõ lý do (MBR của tôi khá mới). Nhưng đây là lần đầu tiên tôi thấy cửa sổ bật lên mà tôi hết bộ nhớ (với 16GB RAM và 50GB dung lượng trống). Tuy nhiên, câu hỏi chính của tôi là làm thế nào để điều tra việc sử dụng bộ nhớ của tác vụ kernel, vì vậy nếu nó có thể lặp lại thì không nên liên quan.
kenorb

5
Sử dụng zprint -t(Sư tử) hoặc sudo zprint -t(Sư tử núi và sau này).
klanomath

1
Bạn đúng với sự không liên quan của độ tái lập liên quan đến câu hỏi của bạn trong tiêu đề, nhưng nó có thể có liên quan để giải quyết (các) vấn đề của bạn.
klanomath

1
Bạn có phiền khi thêm đầu ra cho câu hỏi của bạn (hoặc lưu nó vào tài liệu của bạn) không? Chỉ để tham khảo trong tương lai / để có thể so sánh nó với một bản in được thực hiện trong trạng thái hệ thống quan trọng hơn. IMHO đó là một rò rỉ xui xẻo. Nếu bạn đăng nó tôi có thể nói với bạn nhiều hơn.
klanomath

1
Tôi có cùng một vấn đề bất ngờ. Tôi khá chắc chắn rằng nó liên quan đến docker cho mac hoặc hyperkit. Ngay khi tôi dừng docker cho mac, kernal_task bắt đầu ăn 10GB + bộ nhớ
Charlie Martin

Câu trả lời:


176

Có nhiều điều không ổn với việc sử dụng tác vụ kernel cao. Thông thường, điều này có liên quan đến quá trình bị lỗi hoặc nặng, quá lạm dụng tài nguyên hệ thống (như lập chỉ mục lưu trữ, chạy VM, quá nhiều tab trong trình duyệt web hoặc một số quy trình nền khác).

Dưới đây là một số phương pháp giúp điều tra các vấn đề sử dụng nhân OS X:

Phương pháp cơ bản

  • Chạy Console.appvà kiểm tra ' Tất cả tin nhắn ' để xem có điều gì bất thường hiện đang xảy ra không.
  • Sử dụng Activity Monitor để đọc bộ nhớ hệ thống và xác định lượng CPU, RAM và đĩa đang được sử dụng.

    Hoặc chạy toptrong Terminal và giữ Spaceđể làm mới - dễ dàng tìm ra vấn đề nguyên nhân hơn ( hoán đổi / hoán đổi / đĩa ?).

  • Chạysudo fs_usage trong Terminal để báo cáo các cuộc gọi hệ thống và lỗi trang liên quan đến hoạt động của hệ thống tệp trong thời gian thực (tôi nghĩ đây là tùy chọn tốt nhất từ ​​tất cả các mục khác). Sau đó nhấn Control- Cđể ngăn chặn nó.

    Hành động: Cân nhắc việc tắt các ứng dụng xuất hiện thường xuyên trong danh sách, nhưng bạn không sử dụng chúng.

    Tìm hiểu thêm tại: Làm cách nào để gỡ lỗi một quy trình kernel_task ra ngoài tầm kiểm soát?

  • Chạysudo syscallbypid.d (hoặc syscallbyproc.d), đợi một chút, nhấn Control- C. Bây giờ hãy kiểm tra quá trình nào tạo ra các cuộc gọi hệ thống nhất trong thời gian đã cho (cột cuối cùng) và nếu bạn nhận ra nó, hãy xem xét việc tiêu diệt nó. Nếu không, Google nó và tìm hiểu thêm về nó.

Phương pháp nâng cao

  • Sử dụng sysdiagnoselệnh (có thể được kích hoạt bằng cách nhấn Shift- Control- - - .(dấu chấm) để nhanh chóng thu thập thông tin chẩn đoán trên toàn hệ thống hữu ích trong việc điều tra các vấn đề về hiệu năng / bộ nhớ hệ thống (sẽ xuất hiện /var/tmp) hoặc bởi bạn hoặc các bạn của Apple. bất cứ điều gì, khi được thực hiện - xem xét giải nén tệp được tạo và phân tích nhật ký.

    Xem: Làm thế nào để bạn có được các tệp chẩn đoán hệ thống từ OS X?

  • Chạy footprintđể thu thập thông tin bộ nhớ chi tiết ở cấp độ loại trên mỗi vùng VM và hoán đổi byte:

    sudo footprint -a
    

    Phiên bản cũ hơn:

    sudo footprint -all -categories -swapped -collapseSharing
    
  • Sử dụng spindumpđể cấu hình toàn bộ hệ thống, nó sẽ tạo /tmp/spindump.txttệp (bao gồm kernel và phần mở rộng của nó).

  • Sử dụng vm_statđể hiển thị số liệu thống kê bộ nhớ ảo. Ví dụ

    vm_stat 1 # to display every second.
    
  • Sử dụng zprintđể kiểm tra thông tin về việc sử dụng kernel, có thể bằng cách:

    sudo zprint -t -s | head -n20
    

    Nó sẽ hiển thị các vùng nhân lãng phí nhất.

  • Sử dụng newproc.dđể theo dõi các quy trình mới khi chúng được thực thi, creatbyproc.dcho các tệp:

    sudo newproc.d
    sudo creatbyproc.d
    

    Lưu ý: Trên OS X mới hơn (10.11 trở lên), điều này có thể không hoạt động khi bật bảo vệ toàn vẹn (kiểm tra bằng csrutil status).

  • Thử sar- phóng viên hoạt động hệ thống có thể lấy mẫu và báo cáo các bộ đếm thống kê tích lũy khác nhau được duy trì bởi hệ điều hành.

Để biết thêm các công cụ gỡ lỗi hữu ích, hãy kiểm tra tập lệnh dtrace ( grep dtrace /usr/bin/*). Nếu bạn biết quy trình bị lỗi gây ra sự cố, bạn có thể sử dụng dtrussđể gỡ lỗi.


Hành động

Dưới đây là một số gợi ý có thể giúp bạn với các vấn đề về hệ điều hành.

  • Giải phóng một số bộ nhớ không hoạt động. Để thực hiện việc này, trước tiên bạn phải xóa bộ đệm và buộc bộ đệm đĩa bị xóa:

    sync && sudo purge
    

    sync - buộc hoàn thành việc ghi đĩa đang chờ xử lý (xóa bộ đệm)

    purge - buộc bộ nhớ cache của đĩa bị xóa (xóa và xóa)

    Chức năng của nó về cơ bản là chấm dứt tất cả các hoạt động I / O đang chờ xử lý đang sử dụng bộ đệm đĩa và sau đó giải phóng tất cả bộ đệm đĩa bị chiếm dụng, do đó cần giải phóng không gian đĩa để dễ dàng phân trang và tráo đổi bộ nhớ chính. Nó an toàn để sử dụng, vì nó không ảnh hưởng đến bộ nhớ ẩn danh đã được phân bổ thông qua malloc, vm_allocate, v.v.

  • Sử dụng một số ứng dụng của bên thứ 3 để xóa một số bộ nhớ bị sử dụng quá mức như iBoostUp , SystemPal , v.v.

  • Bạn cũng có thể tắt Spotlight tạm thời:

    sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist 
    

    Và xem xét các dịch vụ khác bằng cách:

    sudo launchctl list | grep ^[0-9]
    sudo launchctl bslist | grep ^A
    
  • Thoát khỏi trình duyệt web của bạn và kiểm tra nếu điều đó giúp. Ví dụ: sử dụng Chrome rất tài nguyên, đặc biệt là khi có một số xử lý giao diện người dùng đang diễn ra trong nền (ví dụ: Javascript) hoặc hoạt hình giống như quảng cáo liên tục hiển thị nội dung.


1
Spotlight tiếp tục xuất hiện trở lại, nhưng tôi không sử dụng nó, và mỗi khi tôi giết nó, nó lại xuất hiện lần thứ hai sau ... Tôi nên loại bỏ nó như thế nào?
ling

1
@ling Tôi sẽ đề nghị bạn hỏi một câu hỏi khác sau đó, vì điều này có liên quan đến bộ nhớ tác vụ kernel cao, không phải là một Spotlight cụ thể.
kenorb

2
thở dài Tôi đã có ram 4 GB trên máy mac của mình và mới đây, nhiệm vụ kernel đã tăng lên 3,1 GB, về cơ bản đóng băng toàn bộ máy tính của tôi. Đã đóng tab Google Drive của tôi và nó đã giảm xuống còn 950 MB ...
Zizouz212

3
Không đủ cụ thể để thực sự giải quyết kernel_taskvấn đề sử dụng bộ nhớ & cpu cao.
hyiltiz

6

Tôi gặp vấn đề tương tự sau khi thay màn hình LCD trên iMac cuối năm 2012. Quạt chạy ở tốc độ RPM cao và sử dụng CPU Kernel_task cao. Tôi thu hẹp nó xuống một cảm biến Nhiệt độ bạn phải chuyển từ màn hình LCD cũ sang màn hình thay thế mới. nếu bạn quên làm như vậy thì tốc độ CPU và Kernel_task bị ảnh hưởng làm chậm hệ thống của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.