Có một số điều cần xem xét và có thể kiểm tra mang trong đầu thiết lập và trường hợp sử dụng của bạn.
Vị trí phân vùng SWAP được đề xuất
Nếu USB HDD không phải là một ý tưởng tốt, tôi nên đặt một số trao đổi ở đâu?
Câu trả lời ngắn gọn, vâng, bạn có thể tạo phân vùng trao đổi trên ổ cứng USB3, nhưng ổ cứng 2x750GB có thể là nơi an toàn nhất để đặt trao đổi.
Tuy nhiên, bạn cũng có thể trải đều và ưu tiên các phân vùng trao đổi của mình trên tất cả các đĩa với mức độ ưu tiên khác nhau để thử hiệu suất tối đa và khả năng trao đổi. Nếu bạn thích tối ưu hóa quá mức như tôi, tôi khuyên bạn nên thử một cái gì đó như sau (yêu cầu mày mò với fstab, v.v.):
- Phân bổ một ít không gian phân vùng trao đổi trên mảng SSD 2x, ví dụ 4GB, với mức độ ưu tiên cao (không gian SSD bị hạn chế và hoang tưởng về tuổi thọ của SSD là lý do người khác không làm điều này).
- Phân bổ thêm không gian phân vùng trao đổi trên mảng ổ cứng 2x, ví dụ 8GB, với mức độ ưu tiên trung bình.
- Phân bổ không gian hoán đổi thậm chí nhiều hơn trong một tệp hoán đổi trên ổ cứng USB3, ví dụ 16GB với mức độ ưu tiên thấp.
Theo cách đó, nếu RAM hệ thống bị nghiền nát với nhiều quá trình cầu xin RAM và bị tráo đổi, tải được phân phối trên tất cả các thiết bị đĩa. Cũng lưu ý, mức độ ưu tiên trao đổi được dựa trên hiệu suất của các hệ thống đĩa cơ bản.
Tiếp theo tôi sẽ thử đi qua một số lý do chi tiết.
Tốc độ lưu trữ có lẽ quan trọng hơn nhiều
Có lẽ bạn đã đọc đề xuất đặt trao đổi trên một ổ đĩa ít bận rộn hoặc chuyên dụng, nhưng nó chỉ áp dụng trong so sánh loại táo và táo và không phải là quy tắc chính xác cho một hệ thống phức tạp hơn trộn lẫn các phương tiện lưu trữ khác nhau như SSD vs ổ cứng và giao diện SATA vs USB3. Trong trường hợp của bạn, nguyên tắc hướng dẫn là cân bằng các loại tải I / O và phân bổ SWAP nơi bạn mong đợi các loại giao diện lưu trữ và ổ đĩa có thông lượng I / O ngẫu nhiên dự phòng / miễn phí tốt nhất. Đó có thể là SSD, nhưng hãy cẩn thận ...
USB3 HDD cho SWAP
Bạn đã đề cập trong một nhận xét rằng tùy chọn USB3 không hoạt động quá tốt và thực sự, lý do có thể là:
- Ổ USB3 của bạn có thể là một hệ thống đĩa đơn, trong khi ổ SSD 2x và ổ cứng 2x với RAID của bạn sẽ có hiệu suất tốt hơn, được đưa ra:
- RAID 0 tăng gần gấp đôi cả hiệu suất đọc và ghi.
- RAID 1 gần như tăng gấp đôi chỉ cần đọc hiệu năng và có thể làm giảm hiệu suất ghi bằng một lượng nhỏ.
- Vì vậy, giả sử hiệu năng ổ đĩa cá nhân tương tự, USB3 HDD sẽ chỉ tốt hơn nếu trung bình, mảng SATA HDD 2x bận rộn 50% thời gian và USB3 1x HDD đã bận 0%.
- Và thậm chí còn hơn thế, nếu bạn so sánh việc hoán đổi trên một ổ cứng SSD với 2 ổ SSD, sẽ không có cuộc thi / cơ hội nào nó sẽ hoạt động tốt như vậy. Các ổ SSD SATA sẽ phải giống như 95% + bận rộn trước khi một ổ USB USB không hoạt động có thể bắt đầu so sánh ...
- USB3 sẽ có độ trễ cao hơn so với SATA. Và độ trễ thấp là yếu tố chính trong hiệu suất truy cập bộ nhớ và khả năng đáp ứng.
Mảng ổ cứng gắn trong để trao đổi
Như trên, các ổ cứng 2x để trao đổi phải tốt hơn so với chỉ 1 ổ cứng treo USB3, và như sẽ được giải thích, nên an toàn khi sử dụng như SWAP.
- Các ổ cứng 2x phù hợp nhất với các tập dữ liệu lớn có xu hướng có các mẫu truy cập tuần tự, ví dụ như các tệp phương tiện (nhạc / video / hình ảnh).
- Tôi không chắc chắn về thiết lập RAID của Intel, nhưng với Linux RAID (mdadm) tôi biết bạn có các tùy chọn, ví dụ:
- bạn có thể chia sẻ cùng một đĩa, nhưng tạo RAID 0 để trao đổi và RAID 1 cho hình ảnh / dữ liệu VM
- bạn có thể tránh đột kích trên không và định cấu hình trực tiếp phân vùng trao đổi thứ nhất vào đầu mỗi ổ đĩa riêng lẻ trong khi định cấu hình mdadm để tạo mảng ra phân vùng thứ 2 trên mỗi ổ đĩa
- Phương tiện truyền thông từ HDD được cho là có tuổi thọ ghi tốt hơn so với SSD (nếu chúng không bị các loại lỗi sớm khác ...)
- Nếu một hệ thống SWAP rất nhiều, nó ngụ ý rất nhiều ghi.
SSD để trao đổi
2x SSD 120GB sẽ là tuyệt vời cho hiệu suất trao đổi, nhưng tuổi thọ của SSD là một yếu tố cần chú ý.
- SSD giống RAM hơn so với đĩa quay và có hỗ trợ I / O ngẫu nhiên tốt hơn nhiều.
- Nếu nhiều máy ảo và quy trình đang chạy và RAM của bạn được sử dụng nhiều, các mẫu truy cập (đọc) lỗi trang đến phân vùng / tệp hoán đổi sẽ kết thúc ngẫu nhiên.
- Đơn vị phân bổ trang bộ nhớ là nhỏ, tức là 4KB
- Tôi giả sử hạt nhân Linux thông minh về 'trao đổi' (giải phóng một số ram bằng cách lấy các trang ra và đưa chúng vào đĩa) và thực hiện theo từng đợt để tối ưu hóa cho việc ghi tuần tự hơn vào đĩa.
- Đối với 'hoán đổi' (khi một quá trình cần dữ liệu từ RAM không có nhưng thực tế là trong lỗi hoán đổi / trang), điều này có thể khá ngẫu nhiên và đó là nơi mà SSD có thể vượt trội.
- Blog MDSN của Windows 7 Engineering khuyến nghị các ổ SSD được đọc vượt quá số lần ghi khoảng 40 đến 1 (hy vọng Linux về nguyên tắc tương tự), giảm bớt mối lo ngại về việc ghi quá nhiều vào SSD
- Ngay cả khi ổ SSD của bạn được sử dụng để lưu trữ hệ điều hành chính của bạn và một số hình ảnh VM, có lẽ cũng có rất nhiều khoảng trống cho các hoạt động của tệp SWAP. Tôi có 2x 128 GB quan trọng trong RAID0 và họ nhận được IO tuần tự tuyệt vời (gần 1000 MB / giây) cộng với hiệu suất đọc / ghi ngẫu nhiên khá tốt (tôi đo được gần 5000 IOP và 50 MB / giây trên hỗn hợp đọc ngẫu nhiên khó chịu với các kích cỡ hỗn hợp chủ yếu ở các khối 4K và 16K, nhưng lên tới 256K).
- SSD cấp doanh nghiệp, tức là dựa trên công nghệ SLC mạnh mẽ hơn, có thể xử lý nhiều chu kỳ xóa-ghi hơn và sẽ ổn khi trao đổi.
- SSD dựa trên người tiêu dùng, tức là dựa trên MLC mật độ cao rẻ hơn, có thể bị ảnh hưởng xấu hơn tuổi thọ dự kiến nếu việc sử dụng trao đổi trở nên rất nặng nề (Tôi giả sử bạn có SSD dựa trên người tiêu dùng dựa trên nhận xét ngân sách bạn đã thực hiện). Tuy nhiên, ít nhất là trong các tình huống tải công việc của máy tính để bàn thông thường, tôi có vẻ như trao đổi trên SSD không phải là vấn đề.
- Khi SSD được sử dụng đầy đủ, hiệu suất ghi sẽ giảm và vấn đề hao mòn ghi và vấn đề tuổi thọ thậm chí còn trở nên tồi tệ hơn.
- Bạn có khả năng có thể giảm thiểu các giới hạn xóa và ghi các vấn đề về hiệu suất của mảng SSD bằng cách cung cấp thêm khoảng trống cho bộ sưu tập rác SSD để giải phóng các khối ghi liền kề để có hiệu suất ghi tốt hơn và tuổi thọ cao hơn.
- Giả sử trước đây bạn đã sử dụng SSD để hoạt động hết công suất, hoạt động xóa an toàn ATA có thể giúp làm mới chúng để các thuật toán cân bằng hao mòn xem SSD đầy đủ là chưa được phân bổ.
- Đơn giản chỉ cần phân vùng chỉ 80 đến 90% dung lượng và để hết dung lượng SSD.
- Loại RAID? Nếu bạn có thêm niềm tin vào độ tin cậy của SSD và có thể dành thời gian để khôi phục từ bản sao lưu, tôi khuyên bạn nên RAID0. Lưu ý RAID 1 trên 2 SSD về mặt kỹ thuật sẽ có tác động gấp đôi về tuổi thọ ghi so với RAID0 (vì nó tăng gấp đôi mỗi lần ghi). Vì vậy, có thể tránh xa RAID1 ...
Các tinh chỉnh khác
Ngoài ra còn có một số điều chỉnh và tùy chọn khác mà bạn nên xem xét khi lo ngại về việc hỗ trợ nhiều máy ảo, v.v.
Linux yêu thích nhiều RAM hơn để lưu trữ I / O và Virtualisation Ghét I / O trên đĩa
Cạm bẫy tiềm năng:
- Đừng phân bổ tất cả RAM của bạn cho các hệ điều hành khách để bạn có thể tiết kiệm một số cho I / O lưu trữ
- Tìm điểm ngọt ngào cho 'swappiness'. Việc hoán đổi sẽ để lại một số chỗ trong RAM vào I / O của bộ đệm, nhưng trao đổi quá nhiều sẽ khiến các quá trình bị hoán đổi quá sớm và làm tổn thương đa nhiệm nói chung.
Các CPU hiện đại có hỗ trợ phần cứng tốt để ảo hóa tài nguyên CPU và Bộ nhớ, nhưng khi chia sẻ lưu trữ đĩa, khối lượng công việc ảo hóa thường bị nghẽn. Linux (và windows) có thể cải thiện hiệu suất I / O bằng cách sử dụng RAM để lưu trữ các hoạt động I / O trong khi các thiết bị đĩa SSD hoặc HDD vẫn đang bận 'bắt kịp'. Do đó, RAM thừa của bạn có thể không chỉ hữu ích để chạy nhiều hệ điều hành mà còn cho I / O lưu trữ bộ đệm ảo.
Vị trí trang khách ảo
Sẽ là một giải pháp tuyệt vời nếu tôi cũng có thể sử dụng cùng một vị trí cho các máy khách vbox của Windows 'để chuyển đổi từ C: sang đó!
Tôi không chắc về điều này, nhưng linh cảm của tôi là:
- thay vì phân bổ đủ / nhiều RAM cho mỗi VM và
để linux trao đổi và trong các trang tạo thành quy trình hộp ảo trên máy chủ và khi cần xem xét bằng cách sử dụng điều khiển bóng của Bộ nhớ VirtualBox
- sau khi kiểm tra hai lần, âm thanh như VirtualBox khóa và chiếm dụng RAM và hệ điều hành máy chủ không thể đưa nó vào và ra
- vì vậy bạn sẽ vẫn cần một số trao đổi cho khách ảo
- Có đủ RAM cho mỗi khách và sử dụng tính năng tạo bóng bộ nhớ sẽ nhanh hơn / tốt hơn so với từng khách VM thực hiện việc hoán đổi của riêng họ thông qua I / O ảo có hình phạt hiệu năng
- đồng thời khám phá tùy chọn cài đặt trình điều khiển virtio cho Windows (VirtualBox hỗ trợ ngay bây giờ và RedHat có các trình điều khiển này)
Nén lưu trữ hoán đổi
Nếu máy chủ ảo của bạn có số lượng lõi CPU dự phòng khá lớn, thì thứ gì đó như zswap có thể hoạt động tốt:
- Có thể tăng hiệu suất tốt nếu sử dụng ổ cứng 2x cho không gian trao đổi.
- Có thể không giúp hiệu năng nhiều như vậy với việc hoán đổi thành 2 lần SSD, nhưng nén sẽ ngụ ý ít chu kỳ ghi hơn.
- Và ngụ ý thêm dung lượng bộ nhớ ảo từ ít bộ nhớ hơn
Dù sao đi nữa, điều này có thể không đáng nỗ lực vì nó sẽ yêu cầu một hạt nhân mới hơn và Debian nổi tiếng vì đã gắn bó với các hạt nhân đã thử nghiệm và cũ hơn, vì vậy không phải là một lựa chọn dễ dàng trừ khi bạn nhập vào một hạt nhân hoặc nhìn vào một bản phân phối khác: Ví dụ Ubuntu 14.04 hoặc CentOS 7 sẽ cung cấp các hạt nhân gần đây hơn.
Kinh nghiệm điểm chuẩn
Trên máy trạm của riêng tôi (Windows 7), tôi đã sử dụng fio ( http://www.bluestop.org/fio/ ) để bắt chước các xu hướng I / O đọc ngẫu nhiên và đọc ngẫu nhiên được đề cập trong blog MSDN. Bất cứ ai khác muốn kiểm tra những tùy chọn lưu trữ khác nhau có thể cung cấp theo khối lượng công việc tệp hoán đổi / trang có thể thử một cái gì đó tương tự.
Khi xem xét dữ liệu từ xa từ hàng ngàn dấu vết và tập trung vào việc đọc và viết pagefile, chúng tôi thấy rằng
- Pagefile.sys đọc số lượng lớn hơn pagefile.sys viết khoảng 40 đến 1,
- Kích thước đọc của Pagefile.sys thường khá nhỏ, với 67% nhỏ hơn hoặc bằng 4 KB và 88% dưới 16 KB. Pagefile.sys ghi tương đối lớn, với 62% lớn hơn hoặc bằng 128 KB và 45% có kích thước chính xác 1 MB.
Thiết lập điểm chuẩn
Đây là tập tin công việc fio tôi đã sử dụng:
[global]
description="test random read and write to estimate suitability for page file use"
filename=fakeswap
numjobs=1
iodepth=1
direct=1
sync=1
filesize=2048m
[pageout]
rw=randwrite
bssplit=64k/38:256K/15:1024K/45:4096k/2
[pagein]
rw=randread
bssplit=4K/67:16K/21:64K/10:256K/2
Vì văn bản bài đăng trên blog của MSDN chỉ đề cập ngắn gọn một vài số liệu thống kê, tôi đã đưa ra một số phỏng đoán có giáo dục về kích thước khối và tỷ lệ IO cho các kích thước đó. Tôi đã sử dụng tùy chọn bssplit để cân các kích thước khối khác nhau. Dự đoán của tôi hy vọng không quá tệ khi đưa ra tỷ lệ cuối cùng của việc đọc ngẫu nhiên so với viết IO tôi nhận được là 38,5: 1, khá gần với tỷ lệ 40: 1 được đề cập bởi bài đăng trên blog.
Tôi đã chạy các điểm chuẩn trên chipset lưu trữ dựa trên AMD SB850 và so sánh chúng với hiệu suất của ổ RAM.
- Kênh đôi DDR3 @ 1600 MHz với RAM 2isk 2G (sử dụng sản phẩm DataRAM RAMDisk)
- SSDx2 RAID 0 (Quan trọng M4 128GB), NTFS
- HDDx4 RAID 10 (Seagate 7200,14 3TB), NTFS
- Ổ đĩa flash ADATA UV150 USB3 32GB, FAT32
Lưu ý, tôi đã thực hiện các điểm chuẩn đọc ngẫu nhiên và ghi ngẫu nhiên một cách độc lập (không trộn lẫn, nhưng một hệ thống thực có thể thấy các mẫu hỗn hợp - Tôi quan tâm đến việc so sánh đọc / pagein so với ghi / trang, do đó tôi tách biệt nó). Ví dụ: các lệnh tôi đã sử dụng là:
fio --section=pageout --output raid10_hdd4_pageout_2G.txt page2g.fio
fio --section=pagein --output raid10_hdd4_pagein_2G.txt page2g.fio
Kết quả điểm chuẩn
Sau khi chạy các điểm chuẩn, họ đã xác nhận sự nghi ngờ của riêng tôi rằng ổ flash USB3 (lưu ý, không phải đĩa cứng trên USB3) có thể hoạt động khá tốt với I / O ngẫu nhiên nhỏ. Tuy nhiên, hóa ra nó không tốt ở các khối ghi ngẫu nhiên lớn hơn với thời gian trễ rất thất thường.
Biểu đồ sau đây cho thấy thời gian được đưa ra trang và trở lại trang trong 2G không gian hoán đổi với các mẫu I / O ngẫu nhiên đại diện / ước tính để phân trang
Tôi cũng đã xem xét thông lượng trung bình và so sánh nó với RAM - nó đưa ra ý tưởng về những điều tồi tệ nhận được khi hệ thống phải sử dụng trao đổi ;-)
Quan sát thêm
- Đọc ngẫu nhiên I / O quan trọng hơn Viết ngẫu nhiên vì kích thước khối nhỏ hơn và số lượng IO lớn hơn. Theo tỷ lệ, pagein đau đớn hơn trang ...
- SSDx2 RAID 0 chậm hơn khoảng 10 lần so với RAM
- HDDx4 RAID10 có vẻ khủng khiếp ở pagein - chậm hơn khoảng 300 lần so với RAM và chậm hơn 30 lần so với SSD.
- Tuy nhiên, HDDx4 RAID10 có vẻ như sẽ hoạt động tương đối tốt hơn khi ra trang - chậm hơn khoảng 40 lần so với RAM và chỉ chậm hơn khoảng 4 lần so với SSD
- Ổ đĩa flash USB3 tốt hơn nhiều khi đọc ngẫu nhiên nhỏ so với RAID RAID (nhanh hơn ~ 9 lần), đến nỗi nó bù cho mức độ kém của nó khi ghi ngẫu nhiên (chậm hơn 7 lần). Ngay cả khi cắm vào cổng USB 2, nhìn chung, nó vẫn vượt qua được RAID RAID.
CẢNH BÁO - không khuyến nghị đặt tệp hoán đổi / trang trên ổ flash USB
- NAND và bộ điều khiển của ổ flash USB có thể thiếu việc triển khai thu gom rác và cân bằng mạnh mẽ (ví dụ: không thể hưởng lợi từ lệnh SSD ATA TRIM), khiến nhiều khả năng, nếu được sử dụng để trao đổi tệp không gian / trang, nó sẽ có tuổi thọ ngắn và suy giảm hiệu suất theo thời gian. Các thử nghiệm của tôi là trên một ổ đĩa flash mới / mới. Có lẽ sau 6 tháng hoán đổi và từ đó, nó sẽ không theo kịp màn trình diễn và có một cái chết sớm.
Một vài lưu ý cuối
- SSD và ổ cứng của tôi có bộ nhớ khá lớn. 256MB và 64GB tương ứng trên mỗi thiết bị, do đó, điều này có lẽ giúp chúng tăng tốc trong khi ổ flash USB có thể thiếu điều này.
- Tôi không chắc chắn mức độ quan sát M $ được thực hiện về việc sử dụng tệp trang windows áp dụng cho phân vùng hoặc tệp hoán đổi Linux, nhưng tôi cá là nó không còn xa nữa ...
Người giới thiệu
Đọc thêm (xin lỗi, sẽ đăng nhiều liên kết hơn, nhưng tôi vừa đăng ký và siêu người dùng chưa tin tưởng tôi)