Có cách nào để OSX sử dụng nhiều RAM hơn và ít trao đổi hơn không?


12

Vấn đề tôi gặp phải là trên một máy chủ (và cả các hộp OSX khác) chúng tôi có 4GB RAM, nhưng chúng tôi thấy rằng OSX chỉ sử dụng 40-60% RAM có sẵn trong khi cũng có trao đổi 6-7GB. Máy chủ đang chạy Apache và MySQL trong khi các máy khác là máy tính để bàn.

Tôi đã so sánh việc sử dụng nó với các hộp Linux tương tự (phần cứng và phần mềm) và thấy rằng Linux thường sử dụng 80-90% RAM và có tệp trao đổi nhỏ hơn nhiều (2-3 GB). Các máy chủ Linux thường chạy nhanh hơn nhiều.

Có cách nào để buộc OSX sử dụng nhiều hơn hoặc hầu hết RAM trước khi sử dụng tệp hoán đổi đĩa không?

Trong Windows, bạn thực sự có thể vô hiệu hóa trao đổi hoàn toàn. Có điều gì tương tự cho OSX?


Để làm rõ: 1. Nút cổ chai có phải là hệ thống VM không? Như khi bạn nhìn thấy các ngôi sao bộ nhớ, có một lượng lớn nếu xuất hiện trang. 2. Bạn lấy thông tin kích thước Free và VM ở đâu? Ví dụ: Kích thước VM được nêu trong Activity Monitor không giống với kích thước của tệp hoán đổi.
Chealion

Tôi không có bằng chứng rằng hệ thống VM (VM hoặc trao đổi) là vấn đề, nhưng tôi biết trên máy tính để bàn của mình, tôi có 6GB RAM, trong đó thường là 2-3 GB thường là miễn phí. Khi tôi chuyển đổi chương trình, bạn sẽ nghĩ rằng nó sẽ rất nhanh vì tất cả đều nằm trong RAM, nhưng thay vào đó, phải mất 2-15 giây để chuyển trở lại một cái gì đó như Illustrator. Tôi nghĩ những điều tương tự đang xảy ra trên máy chủ - một cái gì đó giống như bộ nhớ đệm cho MySQL hoặc các bảng tạm thời. Tôi đang sử dụng hàng đầu để xác định VM, RAM và sử dụng trao đổi. Có ý kiến ​​gì không?
Darryl Hein

3
Để xác định mức sử dụng vm thực tế, cách dễ nhất là chạy du -sh /var/vm- có nghĩa là nó có thể cao một cách giả tạo nếu có một cơn buồn ngủ (thường thấy nhất trên máy tính xách tay). Có một số công cụ có sẵn có thể giúp bạn xác định xem bộ nhớ đó có gây ra sự chậm chạp hay không: vm_stat- đặc biệt là bạn quan tâm đến giá trị trang - nếu nó tăng lên một chút thì bạn biết bạn đang trao đổi nhiều. Để biết thêm thông tin về cách Apple quản lý bộ nhớ của họ: developer.apple.com/documentation/Performance/Conceptual/
mẹo

Câu trả lời:


17

Câu trả lời cơ bản nhất? Không. Hệ điều hành xử lý việc quản lý bộ nhớ cho người dùng - cung cấp một quá trình nhiều bộ nhớ theo yêu cầu và không cung cấp nhiều về khả năng sửa đổi cách hệ thống hoạt động. Nó không giúp ích gì nhiều cho việc cố gắng tìm hiểu xem việc sử dụng bộ nhớ có phải là một phần của phương trình hay không tại sao các máy chủ Linux lại vượt trội so với các máy chủ Mac.

Do thiếu "tính hack" trong hệ thống bộ nhớ ảo, các lựa chọn tốt nhất của bạn là đánh giá hiệu năng của bộ nhớ ảo để xem đó có thực sự là lý do bạn gặp vấn đề về hiệu năng hay không - cơ bản nhất là sử dụng vm_stathoặc sử dụng theo nó sống bằng cách sử dụng vm_stat [number of seconds]để xem có bao nhiêu trang bên ngoài đang xảy ra. Di chuyển các trang không sử dụng từ RAM sang ổ cứng có chi phí thấp hơn nhiều so với việc lấy lại các trang từ ổ cứng về RAM của bạn. Một trang trong thuật ngữ OS X đề cập đến 4kb dữ liệu.

Ngoài ra, các quy trình 32 bit (ví dụ: Illustrator) không thể truy cập nhiều hơn 4GB nên về mặt lý thuyết có thể có 2GB miễn phí và hết bộ nhớ nếu bạn đã cài đặt 6GB.

Trên cả máy tính để bàn của bạn và máy chủ, tôi sẽ chạy vm_stat 2và kiểm tra cột cuối cùng - đặc biệt là khi bạn gặp phải độ trễ nhiều giây khi chuyển sang nói Illustrator.

Để tìm hiểu mức hoán đổi thực sự lớn đến mức nào, bạn có thể kiểm tra kích thước trao đổi trong Activity Monitor hoặc chạy du -shc /var/vm/swap* | tail -n 1.

Việc sử dụng du -sh /var/vmcó một cảnh báo: trên máy tính xách tay có chế độ ngủ đông (mọi thứ trong 4 năm qua hoặc mới hơn) có thể có sleepimagekích thước gần bằng bao nhiêu bộ nhớ bạn đã cài đặt.


Bộ nhớ Mac OS X biệt ngữ:

Có dây : Điều này đề cập đến mã hạt nhân và như vậy. Bộ nhớ không nên được chuyển ra khỏi RAM. Cũng biết là bộ nhớ cư trú.

Chia sẻ : Bộ nhớ được chia sẻ giữa hai hoặc nhiều quá trình. Cả hai quá trình sẽ hiển thị lượng bộ nhớ này nên có thể gây hiểu nhầm đôi chút về số lượng bộ nhớ thực sự được sử dụng.

Real : Đây là mức sử dụng bộ nhớ "thực" cho một ứng dụng được báo cáo bởi task_info () - một số lượng lớn các trang vật lý mà quy trình hiện tại có. (KÍCH THƯỚC)

Riêng tư : Đây là bộ nhớ mà một quá trình chỉ sử dụng riêng mà nó được sử dụng trong bộ nhớ cư trú. (RPRVT)

Ảo : Tổng lượng không gian địa chỉ trong quy trình được ánh xạ tới bất kỳ thứ gì - cho dù đó là không gian lớn tùy ý cho các biến hay bất cứ thứ gì - nó không tương đương với việc sử dụng VM thực tế. (KÍCH THƯỚC)

Hoạt động : Bộ nhớ hiện được gắn nhãn là hoạt động và được sử dụng RAM.

Không hoạt động : "Bộ nhớ không hoạt động không còn được sử dụng và đã được lưu vào bộ nhớ cache. Nó sẽ vẫn còn trong RAM cho đến khi ứng dụng khác cần dung lượng. Để lại thông tin này trong RAM là lợi thế của bạn nếu bạn (hoặc khách hàng của máy tính) quay lại để nó sau. " - Trợ giúp Mac OS X

Miễn phí : Dung lượng RAM thực sự có sẵn mà không cần bất kỳ dữ liệu nào.


Tài liệu tốt nhất mà tôi biết (và đã có thể tìm thấy trong nghiên cứu tiếp theo) là bài viết Quản lý bộ nhớ riêng của Apple trên trang web dành cho nhà phát triển của họ.

Các nguồn đáng giá khác: danh sách gửi thư của Darwin-dev: [ 1 ], [ 2 ] và một bài viết cũ trên MacOSXHint . Ngoài ra, Mike Ash đã đăng một bài giới thiệu tốt về giáo dân trên blog của mình


Có thể (tôi chưa thử) để vô hiệu hóa hệ thống bộ nhớ ảo bằng cách chạy sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plistvà sau đó khởi động lại để Dynamic_pager (chương trình thực sự cấp phát bộ nhớ ảo) không khởi động. Tuy nhiên vì hệ điều hành giả định rằng nó có bộ nhớ ảo nên bạn có thể thấy mình gặp vấn đề rất, rất nhanh. Để tải nó chạy lại sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist(nếu cần từ chế độ người dùng)

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.