it-swarm-vi.com

Bộ nhớ trao đổi là gì?

Tôi đang sử dụng RAM để lưu trữ một số bảng cơ sở dữ liệu của tôi và các bảng khác được lưu trữ trong đĩa cứng.

Hôm nay tôi đã biết rằng các quy trình của tôi đang sử dụng bộ nhớ trao đổi. Bây giờ bộ nhớ hoán đổi là gì và làm cách nào tôi có thể phát hiện ra quá trình nào đang sử dụng bộ nhớ trao đổi và làm cách nào tôi có thể ngăn chúng sử dụng nó?

30
developer

Nếu bạn hết bộ nhớ vật lý, bạn sử dụng bộ nhớ ảo, nơi lưu trữ dữ liệu trong bộ nhớ trên đĩa. Đọc từ đĩa chậm hơn so với đọc từ bộ nhớ, vì vậy điều này làm mọi thứ chậm lại. (Trao đổi dữ liệu giữa bộ nhớ thực và bộ nhớ ảo là "hoán đổi". Không gian trên đĩa là "không gian hoán đổi".)

Nếu ứng dụng của bạn "sử dụng trao đổi", thì bạn cần sử dụng ít bộ nhớ hơn hoặc mua thêm RAM.

(Hoán đổi rất hữu ích vì các ứng dụng không được sử dụng có thể được lưu trữ trên đĩa cho đến khi chúng được sử dụng. Sau đó, chúng có thể được "phân trang" và chạy bình thường trở lại. Mặc dù vậy, nó không có trong bộ nhớ. đối với một số thứ khác, như bộ đệm đĩa. Vì vậy, đây là một tính năng rất hữu ích, nhưng nếu bạn không có đủ bộ nhớ vật lý để chạy chương trình của mình, bạn chắc chắn cần thêm bộ nhớ. May mắn thay, bộ nhớ thực sự rất rẻ trong những ngày này.)

45
jrockway

Một máy tính có một lượng bộ nhớ vật lý nhất định. Nhưng hầu hết thời gian chúng tôi muốn nhiều hơn. Vì vậy, chúng tôi trao đổi một số bộ nhớ trên đĩa.

Mỗi lần chúng ta cần bộ nhớ đó, nó cần được hoán đổi trở lại vào bộ nhớ (hoán đổi một số phần khác). Có những thuật toán cực kỳ thông minh để giảm thiểu độ trễ, nhưng đôi khi chúng ta vẫn phải chờ.

Trên cửa sổ, nếu bạn nhìn vào trình quản lý tác vụ, bạn có thể hiển thị các lỗi trang cột. Điều này cho thấy số lượng thời gian, một ứng dụng yêu cầu một phần bộ nhớ trên đĩa và cần được hoán đổi. Rất nhiều lỗi trang = ứng dụng chậm.

Quá trình này được sử dụng trên nhiều cấp độ. Tóm tắt từ nhanh đến chậm:

  • Ở cấp độ CPU, có các thanh ghi. Đây là những bộ nhớ nhanh nhất nhưng số lượng có hạn.
  • Ngoài ra trên CPU có bộ nhớ cache nhỏ. Ở đây một phần nhỏ của chương trình đang chạy được lưu trữ để truy cập nhanh. Tìm kiếm trên các thuật toán dự đoán chi nhánh nếu bạn muốn biết thêm.
  • Đôi khi có bộ nhớ cache cấp 2 giữa CPU và bộ nhớ chính.
  • Cấp độ tiếp theo là bộ nhớ chính (RAM).
  • Cấp độ cuối cùng và chậm nhất trong tất cả là đĩa, đôi khi bạn có thể sử dụng thẻ nhớ USB làm bộ nhớ thêm.
7
Toon Krijthe
cat /proc/pid/smaps

Nếu bạn không muốn sử dụng trao đổi, thì đừng sử dụng phân vùng trao đổi (nhận xét dòng trong /etc/fstab), nhưng điều đó sẽ ngăn bắt đầu quá trình mới và sẽ khiến malloc thất bại nếu bạn hết bộ nhớ vật lý. Nói chung, đó không phải là một ý tưởng hay ... không an toàn và thậm chí không hữu ích lắm, vì HĐH sẽ giữ các trang nóng trong bộ nhớ và sẽ trao đổi sang đĩa không được sử dụng gần đây.

Một giải pháp khác có thể là hack cơ sở dữ liệu của bạn để nó khóa các trang vào bộ nhớ (tôi biết điều đó có thể được thực hiện, nhưng tôi không thể nói cho bạn biết chính xác bây giờ như thế nào), nhưng dù sao, có vẻ như cơ sở dữ liệu của bạn sẽ sử dụng chính nó. cơ chế lưu trữ.

Để biết hoán đổi là gì và bộ nhớ ảo hoạt động như thế nào ... Tôi khuyên bạn nên xem qua một số bài giảng về Hệ điều hành, có thể MIT Open Courseware có thể giúp ích.

3
fortran

Tôi đã tìm thấy một phần câu trả lời. Bộ nhớ hoán đổi là một khoảng trống trong Đĩa cứng của máy tính mà Hệ điều hành sẽ sử dụng để đưa thông tin thực sự vào RAM để giải phóng nó cho ứng dụng khác. Điều này nên được thực hiện khi hệ thống cần bộ nhớ cho một quy trình mới và không có bộ nhớ nào, vì vậy chúng ta có thể thấy rằng nếu hệ thống của chúng ta có nhiều RAM thì có thể sẽ không cần bộ nhớ SWAP.

[~ # ~] cập nhật [~ # ~]

Để tìm vị trí Hoán đổi không gian (hoặc bộ nhớ ảo), bạn có thể truy cập Task Manger (CTRL + ALT + DEL) và bật từ XEM -> COLUMNS -> VIRTUAL MEMOR. Bây giờ chỉ cần tính toán sự khác biệt giữa việc sử dụng bộ nhớ và bộ nhớ ảo. Ngoài ra đây là hướng dẫn cách xem nếu bạn đang chạy Vista: http://www.ehow.com/how_5067693_increas-swap-space.html

1
faya