[Question] Re: Liệu có cần swap khi dùng linux |
05/12/2008 09:21:10 (+0700) | #31 | 161386 |
mR.Bi
Member
|
0 |
|
|
Joined: 22/03/2006 13:17:49
Messages: 812
Offline
|
|
ở Kernel 2.6 thì hình như không còn sự khác biệt giữa Swap files và Swap Partitions. |
|
All of my life I have lived by a code and the code is simple: "honour your parent, love your woman and defend your children" |
|
|
|
[Question] Re: Liệu có cần swap khi dùng linux |
05/12/2008 09:23:40 (+0700) | #32 | 161387 |
|
St Konqueror
Member
|
0 |
|
|
Joined: 08/12/2007 00:47:39
Messages: 229
Offline
|
|
kenshin8x wrote:
về mặt kỹ thuật thì swap của các hệ điều hành nói chung không có sự khác biệt. sự khác nhau giữa swap của linux khác swap của windows là win dành 1 phần ổ cứng cài đặt làm swap (cho đỡ rắc rối khi cài đặt nhất là đối với người không rành về máy tính) còn swap của linux đòi hởi phân vùng riêng biệt để quản lý cho khoa học
Hơ hơ, đang trong box *nix mà windows gì đây vậy bác?
Bổ sung thêm bài viết trước: Mình google thì chỉ thấy nói là kernel 2.6.x thì swap partition và swap file là như nhau, nhưng kernel 2.4.x trở về trước thì hiệu năng dùng swap file kém hơn swap partition. Còn lí do tại sao thì mình không thấy nói. |
|
|
|
|
[Question] Re: Liệu có cần swap khi dùng linux |
05/12/2008 09:28:07 (+0700) | #33 | 161388 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
St Konqueror wrote:
Hi all, các bạn có thể cho mình biết sự khác nhau (về mặt technique và về hiệu năng sử dụng) giữa swap partition và swap file được không?
Cám ơn.
Tớ chưa bao giờ dùng swap file, nhưng sau khi suy nghĩ và tìm đọc thì tạm tổng kết thế này:
- swap partition có thể được dùng chung bởi 2 hoặc nhiều distro cài trên một máy
- swap partition sẽ tốt hơn trong trường hợp đĩa cứng đầy, bởi vì swap file sẽ có thể tạo phân mảnh
- swap file tiện dụng hơn trong trường hợp bạn cần thay đổi kích cỡ của swap thường xuyên
- Một số người nói rằng: với cấu hình phần cứng ngày nay + những phiên bản kernel hiện tại (>= 2.6) và đĩa cứng của bạn còn trống nhiều thì swap partition hay swap file cũng như nhau thôi.
- Theo lý thuyết thì swap file sẽ hoạt động với hiệu suất kém hơn một chút bởi vì nó được truy xuất qua file system
- Bạn có nguy cơ gặp rủi ro cao hơn nếu đặt swap file chung trên những phân vùng lưu dữ liệu
- ...
Mời các bạn bổ sung và thảo luận tiếp trong trường hợp bạn dùng cả swap file và swap partition trên cùng một đĩa cứng: hệ thống sẽ truy xuất kiểu gì, nếu kernel bị crash thì sao, ... |
|
Let's build on a great foundation! |
|
|
|
[Question] Re: Liệu có cần swap khi dùng linux |
06/12/2008 12:52:38 (+0700) | #34 | 161508 |
|
oRRoid
Member
|
0 |
|
|
Joined: 21/11/2008 19:07:57
Messages: 14
Offline
|
|
mrro wrote:
tớ có bao giờ kêu là bắt buộc phải có swap đâu. tớ chỉ nói là nên có, bởi vì không có swap thì có chuyện phiền toái sẽ xảy ra, chẳng hạn như giảm performance của hệ thống, bất kể là desktop hay server
Có phải ý mrro là một hệ thống có swap luôn hoạt động tốt hơn với 1 hệ thống không có swap ?
Một phân vùng swap dù sao cũng nằm trên đĩa cứng, cho nên tốc độ của nó chậm hơn nhiều so với RAM.
Giả sử mình có một hệ thống (desktop) có RAM 4GB, nhưng chỉ dùng các ứng dụng như Mozilla Firefox hay OpenOffice.org ... thì việc để dữ liệu qua Swap > RAM > CPU thay vì RAM > CPU có phải là tối ưu ?
Có những phiền toái nào có thể xảy ra với một hệ thống không có swap ?
|
|
|
|
|
[Question] Re: Liệu có cần swap khi dùng linux |
06/12/2008 16:48:07 (+0700) | #35 | 161516 |
|
K4i
Moderator
|
Joined: 18/04/2006 09:32:13
Messages: 635
Location: Underground
Offline
|
|
oRRoid wrote:
mrro wrote:
tớ có bao giờ kêu là bắt buộc phải có swap đâu. tớ chỉ nói là nên có, bởi vì không có swap thì có chuyện phiền toái sẽ xảy ra, chẳng hạn như giảm performance của hệ thống, bất kể là desktop hay server
Có phải ý mrro là một hệ thống có swap luôn hoạt động tốt hơn với 1 hệ thống không có swap ?
Một phân vùng swap dù sao cũng nằm trên đĩa cứng, cho nên tốc độ của nó chậm hơn nhiều so với RAM.
Giả sử mình có một hệ thống (desktop) có RAM 4GB, nhưng chỉ dùng các ứng dụng như Mozilla Firefox hay OpenOffice.org ... thì việc để dữ liệu qua Swap > RAM > CPU thay vì RAM > CPU có phải là tối ưu ?
Có những phiền toái nào có thể xảy ra với một hệ thống không có swap ?
Dĩ nhiên, cái ích lợi đầu tiên, nhìn thấy ngay bao giờ cũng là độ ổn định của hệ thống.
Kernel sẽ chỉ gọi đến swap khi nào không đủ bộ nhớ RAM để phục vụ nữa. Chính vì thế sẽ không có cái chu trình SWAP => RAM => CPU đâu trong trường hợp có 4GB RAM trừ phi hệ thống tiêu dùng cạn kiệt 4GB đấy rồi.
Còn phần phiền toái, bác có thể đọc lại những bài viết của mọi người ở trên. Thấy rất rõ.
|
|
Sống là để không chết chứ không phải để trở thành anh hùng |
|
|
|
[Question] Re: Liệu có cần swap khi dùng linux |
06/12/2008 19:12:53 (+0700) | #36 | 161518 |
|
oRRoid
Member
|
0 |
|
|
Joined: 21/11/2008 19:07:57
Messages: 14
Offline
|
|
K4i wrote:
Kernel sẽ chỉ gọi đến swap khi nào không đủ bộ nhớ RAM để phục vụ nữa. Chính vì thế sẽ không có cái chu trình SWAP => RAM => CPU đâu trong trường hợp có 4GB RAM trừ phi hệ thống tiêu dùng cạn kiệt 4GB đấy rồi.
RAM 4GB thì mình chưa có để thử, nhưng với hệ thống RAM 1GB, dùng Kernel 2.6.24 thì khi sử dụng những ứng dụng như FF hay OO.o thì swap thỉnh thoảng vẫn được dùng (dù chỉ vài trăm kB) mặc dù bộ nhớ còn khá nhiều.
Cho nên mình nghĩ việc Kernel chỉ gọi đến swap khi không đủ bộ nhớ là không chính xác. |
|
|
|
|
[Question] Re: Liệu có cần swap khi dùng linux |
06/12/2008 21:51:18 (+0700) | #37 | 161520 |
mrro
Administrator
|
Joined: 27/12/2001 05:07:00
Messages: 745
Offline
|
|
xui quá xá, nãy tớ soạn một bài dài ơi là dài về cái cách linux quản lý bộ nhớ, nhưng bấm nhầm nút gì đó, tự nhiên Firefox nó tắt mất cái cửa sổ đang soạn bài của tớ .
thôi tớ viết ngắn gọn vài dòng ở đây vậy:
1. linux không swap toàn bộ chương trình ra ngoài theo kiểu cũ, mà sử dụng kỹ thuật paging, swap từng page (mỗi page là 4K trên x86, có thể khác trên các platform khác)
2. không phải hết bộ nhớ thì linux mới bắt đầu swap, mà nó sẽ swap những gì nó không cần ngay khi nó thấy lượng free memory giảm xuống quá thấp. mà free memory trên linux lúc nào cũng thấp, tự vì linux nó luôn cố mmap(2) thật nhiều file vào bộ nhớ, để tăng tốc.
3. cái gì bị swap ra ngoài? thường là các page ít sử dụng đến và các page liên quan đến heap và stack của các chương trình. nếu không có swap partition, linux bắt buộc phải để mấy page này trong bộ nhớ, làm cho việc sử dụng bộ nhớ không hiệu quả.
cho nên việc bạn gì ở trên memory còn mà swap vẫn được xài là vì vậy. phần swap này nó đang chứa các page ít sử dụng đến, nhưng vẫn chưa thể bỏ đi của máy tính.
trời ơi nãy viết dài dòng hay lắm, tiếc quá đi .
-m |
|
http://tinsang.net
TetCon 2013 http://tetcon.org
Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html |
|
|
|
[Question] Re: Liệu có cần swap khi dùng linux |
07/12/2008 21:08:00 (+0700) | #38 | 161628 |
|
giobuon
Member
|
0 |
|
|
Joined: 10/09/2006 06:25:46
Messages: 72
Offline
|
|
Okie, đã hiểu thêm đôi chút. Bác tóm lại như này từ đầu có phải đỡ không. |
|
|
|
|
[Question] Re: Liệu có cần swap khi dùng linux |
09/12/2008 05:25:44 (+0700) | #39 | 161737 |
|
Xuan Hy
Locked
|
0 |
|
|
Joined: 29/06/2008 12:40:55
Messages: 75
Offline
|
|
Cám ơn mọi người, giờ thì không chỉ giải quyết được câu hỏi mà còn có thêm nhiều kiến thức rất hữu ích. Mong là sau này sẽ có nhiều hơn những cuộc trao đổi thú vị như thế này.
- xh - |
|
|
|
|
[Question] Re: Liệu có cần swap khi dùng linux |
12/12/2008 10:53:45 (+0700) | #40 | 162094 |
StarGhost
Elite Member
|
0 |
|
|
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
|
|
mrro wrote:
2. không phải hết bộ nhớ thì linux mới bắt đầu swap, mà nó sẽ swap những gì nó không cần ngay khi nó thấy lượng free memory giảm xuống quá thấp. mà free memory trên linux lúc nào cũng thấp, tự vì linux nó luôn cố mmap(2) thật nhiều file vào bộ nhớ, để tăng tốc.
Đính chính chút: bản thân mmap() không chiếm giữ/dùng memory, mà memory chỉ bị dùng/chiếm giữ khi virtual memory region trong process address space được đọc hoặc ghi (do Copy on Write) bởi process đó.
Không biết mrro có thể giải thích rõ hơn linux cố map những file nào được không, vào kernel address space hay đâu? |
|
Mind your thought. |
|
|
|
[Question] Re: Liệu có cần swap khi dùng linux |
13/12/2008 12:05:31 (+0700) | #41 | 162240 |
mrro
Administrator
|
Joined: 27/12/2001 05:07:00
Messages: 745
Offline
|
|
@starghost: hơ hơ ý tớ là cái process nào nó gọi mmap(2) thì nó sẽ chiếm memory, chứ tự bản thân thằng kernel nó đâu có chủ động mmap(2) những thằng mà nó không cần đến đâu :-p.
khi mình chạy một ứng dụng bằng execve(2), thì cái elf loader của linux (giả sử đó là file elf) nó sẽ làm một số việc (mà cuối cùng thường sẽ có một cái lời gọi đến thằng mmap(2)):
* load cái binary vào bộ nhớ: cái này thì nó không gọi trực tiếp mmap(2), mà nó có một hàm trong source của linux nó làm, nhớ không lầm là hàm elf_map.
* nếu binary là dynamically linked thì linux sẽ load cái elf interpreter (thường cái này có sẵn trong bộ nhớ rồi, nó là cái /lib/ld-linux.so.2). cái thằng elf interpreter này tới lượt nó sẽ load tiếp mấy cái shared library (và mấy cái library nằm trong LD_PRELOAD) vào bộ nhớ. tất cả các vụ load này, đều sẽ có thực hiện một cái mmap(2).
* tới lượt chính application nó mmap(2) mấy cái file của nó, ví dụ như file cấu hình của hệ thống mà nó cần, hay file cấu hình riêng của nó...
tớ vừa chạy thử cái evince (là chương trình đọc file pdf) xem nó mmap(2) bao nhiêu phát:
$ strace -o output evince
$ fgrep mmap output | wc -l
311
$ fgrep MAP_ANONYMOUS output | wc -l
87
đó ghê chưa, chạy một cái đơn giản thôi, mà nó mmap(2) những 311 lần, trong đó chỉ có 87 lần là nó mmap(2) dạng anonymous thôi, còn lại đều là file-backed mmap hết.
còn muốn coi những file nào đang được mmap(2) thì dùng lệnh:
$ sudo lsof | grep mem
mấy cái file này khi được mmap(2) vào, thì việc nó có nằm trong bộ nhớ hay không là do thằng kernel quyết định (chính xác là cái virtual memory manager nó chăm sóc). mà tớ đã nói, để tăng tốc, cứ thằng nào được mmap(2) vào, là thằng kernel nó cố gắng để cho thằng đó nằm yên trong bộ nhớ, nếu điều kiện cho phép.
-m |
|
http://tinsang.net
TetCon 2013 http://tetcon.org
Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html |
|
|
|
[Question] Re: Liệu có cần swap khi dùng linux |
13/12/2008 15:01:21 (+0700) | #42 | 162277 |
StarGhost
Elite Member
|
0 |
|
|
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
|
|
mrro wrote:
Mà tớ đã nói, để tăng tốc, cứ thằng nào được mmap(2) vào, là thằng kernel nó cố gắng để cho thằng đó nằm yên trong bộ nhớ, nếu điều kiện cho phép.
Ừ, nhưng mà ý của tớ là nếu file nào đó chỉ được mmap() không thôi thì kernel sẽ không cho file đó vào bộ nhớ đâu. Kernel chỉ cho từng phần của file đó vào bộ nhớ khi phần đó được process đụng đến. |
|
Mind your thought. |
|
[Question] Re: Liệu có cần swap khi dùng linux |
13/12/2008 23:27:33 (+0700) | #43 | 162305 |
mrro
Administrator
|
Joined: 27/12/2001 05:07:00
Messages: 745
Offline
|
|
@starghost: àh àh hiểu và đồng ý.
-m |
|
http://tinsang.net
TetCon 2013 http://tetcon.org
Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html |
|
|