Tôi đã sử dụng unix khá lâu và trong vài năm qua tôi cảm thấy như hoán đổi là lỗi thời, nhưng tôi tò mò không biết những người khác nghĩ gì.
Đối số của tôi đại khái là thế này (giả sử không có sự lo lắng toàn cầu hoặc vặn vẹo các cài đặt OOM):
There is little value in swap because if you need to swap out to disk,
odds are it's going to be a vicious cycle where an app will continue
to eat not only real memory, but swap as well until it gets OOM
reaped (_if_ it gets OOM reaped).
If you have swap enabled, it will only prolong this death march to
the detriment of other processes - and in the worst case where the
process is not OOM reaped in a timely manner, grind the system to
a halt.
Without swap, it will probably get OOM reaped sooner (if at all)
Đối với bất kỳ dịch vụ nào được điều chỉnh theo hiệu suất, tôi sẽ nghĩ rằng việc hiểu được giới hạn trên của việc sử dụng tài nguyên sẽ là chìa khóa để điều chỉnh dịch vụ đó ngay từ đầu, trong trường hợp bạn biết bạn cần bao nhiêu.
Tôi không thể tưởng tượng nhiều tình huống (một số, nhưng không phải nhiều) khi bạn tạm dừng một quy trình đang chạy và nó có thể trao đổi để nhường chỗ cho những thứ khác, nhưng bạn vẫn mất ổ cắm nếu bạn làm vậy, vì vậy buộc phải core-dump thông qua gcc hoặc sao chép bộ nhớ ra bằng tay sẽ tương đương về mặt chức năng.
Tôi chắc chắn sẽ không muốn trao đổi trên một hệ thống nhúng (mặc dù nó có thể có một ram có sẵn nhỏ hơn), nếu bạn hết ram, tôi thà chết quá trình của mình còn hơn là xé nát bộ nhớ flash hàng triệu lần ghi lái xe vào cuối tuần bằng cách mài mòn các lĩnh vực xuống nub.
Bất kỳ bộ râu unix ngoài kia có bất kỳ lý do thuyết phục để giữ trao đổi xung quanh?
CẬP NHẬT câu trả lời && phân tích:
ĐÃ XÁC NHẬN? - fork () yêu cầu cùng dung lượng bộ nhớ cho tiến trình con như cha mẹ
Modern fork () là bản sao khi viết cho trẻ em trên POSIX (nói chung), nhưng cụ thể là Linux và FreeBSD , và tôi giả sử OSX bằng phép ngoại suy. Tôi xem xét phần này của hành lý lỗi thời mà trao đổi mang theo nó.
Thật kỳ lạ, bài báo Solaris này tuyên bố rằng mặc dù Solaris sử dụng Copy-on-Write với fork (), nhưng bạn nên có ít nhất gấp 2 lần (!) Kích thước quy trình cha mẹ trong bộ nhớ ảo miễn phí để fork () không bị hỏng trong ở giữa. Trong khi phần tử Solaris phần nào phá vỡ lập luận rằng hoán đổi là lỗi thời - tôi nghĩ rằng đủ các hệ điều hành thực hiện chính xác CoW theo cách quan trọng hơn để xua tan huyền thoại hơn là đánh dấu nó như là sự biện minh cho việc hoán đổi. Từ. Hãy đối mặt với nó. Tại thời điểm này, những người thực sự sử dụng Solaris có lẽ chỉ là những người của Oracle. Không xúc phạm Solaris!
XÁC NHẬN - các tệp tmpfs / ramfs có thể được hoán đổi như một sự kết hợp khi tmpfs / ramfs lấp đầy
Đừng sử dụng tmpfs / ramfs không giới hạn! Luôn xác định rõ ràng số lượng ram mà bạn muốn tmpfs / ramfs sử dụng.
PLAUSABLE - Có một chút trao đổi 'chỉ trong trường hợp'
Một trong những ông chủ cũ của tôi từng có một câu nói rất hay, 'bạn không biết những gì bạn không biết' - về cơ bản, bạn không thể đưa ra quyết định dựa trên thông tin mà bạn chưa có. Tuy nhiên, đây là một lý lẽ hợp lý để trao đổi với tôi - Tôi nghi ngờ rằng các loại điều bạn sẽ làm để phát hiện xem ứng dụng của bạn có bị tráo đổi hay không sẽ nặng hơn kiểm tra xem malloc () có thành công hay bắt ngoại lệ không một thất bại mới ().
Điều này có thể hữu ích trong trường hợp bạn đang chạy máy tính để bàn và có một loạt những điều ngẫu nhiên đang diễn ra, nhưng thậm chí vẫn còn - nếu có gì đó không ổn, tôi thà gặt hái hơn là lặn xuống địa ngục. Đó chỉ là tôi.
BẮT ĐẦU! - Trên Solaris , trao đổi rất quan trọng vì một vài lý do
tmpfs - trạng thái Lượng không gian trống có sẵn cho tmpfs phụ thuộc vào lượng không gian hoán đổi chưa phân bổ trong hệ thống. Kích thước của một hệ thống tệp tmpfs phát triển để chứa các tệp được ghi vào nó, nhưng có một số sự đánh đổi cố hữu cho người dùng nặng của tmpfs. Tmpfs chia sẻ tài nguyên với các phân đoạn dữ liệu và ngăn xếp của các chương trình thực thi. Việc thực thi các chương trình rất lớn có thể bị ảnh hưởng nếu hệ thống tệp tmpfs gần với kích thước tối đa cho phép của chúng. Tmpfs miễn phí phân bổ tất cả trừ 4 MB dung lượng trao đổi của hệ thống.
Solaris sự thật và huyền thoại về trao đổi - trạng thái Bộ nhớ ảo ngày nay bao gồm tổng cộng RAM vật lý và không gian trao đổi trên đĩa. Solaris KHÔNG yêu cầu bất kỳ không gian trao đổi nào được cấu hình cả. Nếu bạn chọn tùy chọn này, khi RAM đầy, bạn sẽ không thể bắt đầu các quy trình mới. .
Tôi không chắc điều này có nghĩa là bản đồ ảo tối đa bạn có thể tạo là ram + hoán đổi hay nếu bạn vẫn có thể làm một cái gì đó như mmap () một tệp lớn hơn ram và dựa vào khởi tạo lười biếng của mmap () Có thể chạy Solaris những ngày này tốt mà không cần trao đổi, có vẻ như nó không thân thiện với nó hơn các hệ điều hành POSIXy khác.
BẮT ĐẦU! Các công cụ ngủ đông phổ biến của Linux dường như dựa vào trao đổi
Theo mặc định, TuxOnIce trông giống như nó dựa trên trao đổi cho ngủ đông - mặc dù backends khác tồn tại. Tuy nhiên, nếu bạn không chạy một hộp cần ngủ đông, tôi vẫn sẽ đứng sau tuyên bố rằng 'hoán đổi là lỗi thời trên linux'