Nén NTFS trên SSD - thăng trầm


13

Chủ đề này thảo luận về nén NTFS trên ổ cứng như là một phương pháp cải thiện hiệu suất truy cập đĩa và kết luận rằng điều đó thường kém hơn là không. Nhưng tôi luôn xem nén như một cách để bảo tồn không gian và học được hiệu quả của nó ở đó. Và bây giờ tôi có một ổ SSD, nơi không gian đắt đỏ và hiệu suất phạt, ví dụ như đọc / ghi 2 cụm thay vì 1 thì thấp hơn nhiều.

Mặt khác, vì SSD nhanh hơn nhiều so với ổ cứng, tôi hy vọng rằng thông lượng cao hơn sẽ dẫn đến việc sử dụng CPU cao hơn. Điều này có thể trở thành một vấn đề? Bất kỳ suy nghĩ khác về vấn đề này?

Tôi thích hiệu ứng tiết kiệm không gian, nó không lớn nhưng nó ở đó. Tuy nhiên, nếu hiệu suất là một mối quan tâm, tôi muốn tắt nó đi:

nhập mô tả hình ảnh ở đây


Nhiều bộ phần mềm có tệp bạn không bao giờ sử dụng. Các tập tin thường được sử dụng, dù sao cũng được lưu trong bộ nhớ cache. LZW thực sự là một thuật toán rất đơn giản, vì vậy đừng hy vọng nó sẽ làm hỏng CPU nhiều như vậy.
Uur Gümüşhan

@ UğurGümüşhan: chính xác, tôi không nhận thấy bất kỳ việc sử dụng CPU bổ sung nào ngay cả khi làm việc với các tệp nén lớn từ ổ SSD nhanh với tốc độ dữ liệu cao.
Hươu cao cổ Violet

Câu trả lời:


12

Microsoft đã viết điều này một thời gian trước trong một blog :

NTFS nén các tệp bằng cách chia luồng dữ liệu thành CU (điều này tương tự như cách các tệp thưa thớt hoạt động). Khi nội dung luồng được tạo hoặc thay đổi, mỗi CU trong luồng dữ liệu được nén riêng lẻ. Nếu quá trình nén dẫn đến giảm một hoặc nhiều cụm, đơn vị nén sẽ được ghi vào đĩa ở định dạng nén. Sau đó, một phạm vi VCN thưa thớt được xử lý đến cuối phạm vi VCN được nén cho mục đích căn chỉnh (như trong ví dụ dưới đây). Nếu dữ liệu không nén đủ để giảm kích thước của một cụm thì toàn bộ CU được ghi vào đĩa ở dạng không nén.

Thiết kế này giúp truy cập ngẫu nhiên rất nhanh vì chỉ cần giải nén một CU để truy cập bất kỳ VCN nào trong tệp. Thật không may, truy cập tuần tự lớn sẽ tương đối chậm hơn do phải giải nén nhiều CU để thực hiện các hoạt động tuần tự (như sao lưu).

Và trong một bài viết KB viết điều này :

Trong khi nén hệ thống tệp NTFS có thể tiết kiệm dung lượng ổ đĩa, việc nén dữ liệu có thể ảnh hưởng xấu đến hiệu suất. Nén NTFS có các đặc tính hiệu suất sau. Khi bạn sao chép hoặc di chuyển tệp NTFS đã nén sang một thư mục khác, NTFS sẽ giải nén tệp, sao chép hoặc di chuyển tệp sang vị trí mới và sau đó nén lại tệp. Hành vi này xảy ra ngay cả khi tệp được sao chép hoặc di chuyển giữa các thư mục trên cùng một máy tính. Các tệp nén cũng được mở rộng trước khi sao chép qua mạng, vì vậy nén NTFS không tiết kiệm băng thông mạng.

Vì nén NTFS là bộ xử lý chuyên sâu, chi phí hiệu năng đáng chú ý hơn trên các máy chủ, thường bị giới hạn bộ xử lý. Các máy chủ được tải nặng với nhiều lưu lượng ghi là ứng cử viên kém cho việc nén dữ liệu. Tuy nhiên, bạn có thể không gặp sự suy giảm hiệu suất đáng kể với các máy chủ chỉ đọc, chủ yếu đọc hoặc tải nhẹ.

Nếu bạn chạy một chương trình sử dụng ghi nhật ký giao dịch và liên tục ghi vào cơ sở dữ liệu hoặc nhật ký, hãy định cấu hình chương trình để lưu trữ các tệp của nó trên một ổ đĩa không được nén. Nếu một chương trình sửa đổi dữ liệu thông qua các phần được ánh xạ trong một tệp nén, chương trình có thể tạo ra các trang "bẩn" nhanh hơn các nhà văn được ánh xạ có thể viết chúng. Các chương trình như Microsoft Message Queue (còn được gọi là MSMQ) không hoạt động với nén NTFS vì vấn đề này.

Vì các thư mục nhà của người dùng và hồ sơ chuyển vùng sử dụng nhiều thao tác đọc và ghi, Microsoft khuyên bạn nên đặt các thư mục nhà của người dùng và hồ sơ chuyển vùng trên một ổ đĩa không có nén NTFS trên thư mục gốc hoặc trên thư mục gốc.


Tóm lược:

chỉ nén các tệp nhỏ không bao giờ thay đổi (chỉ đọc và không ghi vào tệp) vì đọc nhanh, nhưng ghi yêu cầu giải nén và nén mới, điều này làm mất năng lượng CPU và loại lưu trữ không quá quan trọng.


Cảm ơn các trích đoạn, đã học được một số điều mới ở đây. Nhưng tôi không hiểu tại sao bạn chỉ khuyên nén các tệp nhỏ. Các tệp lớn thường thu nhỏ toàn bộ, vì vậy nếu đó là những gì bạn muốn nén ở vị trí đầu tiên (đọc: không gian lưu trữ là một mối quan tâm) thì việc nén bất kỳ tệp nào, bất kể kích thước là hoàn toàn hợp lý.
Hươu cao cổ Violet

Bạn sẽ thấy mức độ sử dụng CPU tăng lên khi bạn sử dụng các tệp nén, đặc biệt là khi ghi các tệp nén hiện có hoặc đọc tuần tự các tệp nén lớn (điều này sẽ xảy ra nếu đó là tệp phương tiện.) Bạn nên chạy thử nghiệm và xem liệu có tăng đột biến trong việc sử dụng CPU không là chấp nhận được. Nếu CPU của bạn được sử dụng nhiều, văn bản trên khuyên bạn không nên sử dụng nó và nếu hệ thống của bạn không phải là máy chủ, có lẽ nó ổn.
LawrenceC

"Khi bạn sao chép hoặc di chuyển tệp NTFS đã nén sang một thư mục khác, NTFS giải nén tệp", tôi vừa di chuyển tệp nén 11 GB trong một thư mục khác, tôi có thể nói rằng nó không giải nén được vì tệp đã được di chuyển ngay lập tức.
M.kazem Akhÿ

Làm thế nào về việc sử dụng bộ nhớ cache ram trên SSD?
M.kazem Akhÿ

6

Như Claudio nói rất nhiều điều chi tiết, tôi sẽ tiếp tục ý kiến ​​của anh ấy cũng là của tôi, tôi đã thấy những tác động tương tự sau khi thử những gì anh ấy nói.

Đối với SSD, không được sử dụng nén NTFS.

Bây giờ tôi sẽ liệt kê một số động cơ để khẳng định như vậy:

Motive Nº1: Nó sẽ tiêu diệt SSD musch nhanh hơn, vì nó tạo ra hai lần ghi; Luôn luôn nén nén NTFS ghi dữ liệu không nén trước khi bắt đầu nén trên RAM và sau đó chỉ ghi lại dữ liệu đã nén nếu nó đạt được ít nhất 4KiB.

Động lực 2: Sử dụng cụm 4K 4KiB trên SSD sẽ mất 50% tốc độ SSD, kiểm tra mọi điểm chuẩn và sẽ thấy các khối 128KiB giúp SSD nhanh hơn hai lần so với sử dụng các khối 4KiB và chỉ có thể sử dụng nén NTFS trên các phân vùng NTFS của cụm 4KiB.

Motive Nº3: Có các thùng chứa (như PISMO File Mount) có thể tạo một thùng chứa được xem như khi nén và / hoặc mã hóa, các contein đó thực hiện nén trên RAM và không gửi dữ liệu không nén vào đĩa trước khi ghi lại cũng ở dạng nén, PISMO có tỷ lệ nén tốt hơn NTFS.

Có nhiều động cơ hơn, nhưng đó là các nhà nhập khẩu hàng đầu nhất.

Điểm otrer là TỐC ĐỘ, mọi thao tác đều được thực hiện trên CPU, vì vậy nếu bạn không có CPU rất nhanh (luồng đơn được sử dụng cho NTFS như vậy trong khi đa luồng được sử dụng trên một số container) sẽ thấy đọc / ghi rất chậm khi nén; tệ nhất, bạn có thể có một cpu rất nhanh, nhưng nếu nó được sử dụng cho những thứ khác (như kết xuất, chuyển mã, v.v.) thì không còn cpu nào để nén, vì vậy một lần nữa bạn sẽ có hiệu suất kém.

Việc xử lý NTFS chỉ tốt cho các đĩa chậm truyền thống khi bạn có cpu mà không sử dụng nhiều, nhưng nó yêu cầu phân mảnh tốt sau mỗi lần ghi (ở cấp tệp), vì mỗi khối 64KiB (được nén hoặc không) được ghi ở nhiều vị trí 64KiB; cách duy nhất để đóng gói các đoạn như vậy là sau khi nén (hoặc ghi vào thư mục đã nén) thực hiện phân mảnh tệp đó.

PD: Coi chừng chúng ta đang nói về Windows trên phần cứng thực sự, không phải bên trong các máy ảo, điều quan trọng là người ghi vào phương tiện vật lý, những người khác có thể có các lớp bộ đệm có thể giảm thiểu hiệu ứng và cũng cải thiện mọi thứ rất nhiều.


Những gì bạn đang nói có ý nghĩa về nguyên tắc, nhưng trong thực tế, tôi đã sử dụng nén NTFS trong hơn một thập kỷ, lần đầu tiên trên ổ cứng, gần đây trên SSD và tôi không nhận thấy nó có ảnh hưởng đáng kể đến việc sử dụng CPU. Nén LZ77 có thể rất nhanh. Viết đôi có thể là một vấn đề thực sự, nhưng có lẽ không dành cho người dùng gia đình (do tải ghi tương đối thấp). Và tôi tự hỏi liệu Microsoft đã hoặc sẽ tối ưu hóa quy trình ghi cho SSD để loại bỏ việc ghi sơ bộ. Nó sẽ là ngớ ngẩn của họ không.
Hươu cao cổ Violet

2

Không ai nói về vấn đề thị trưởng trên non SSD, đó là sự phân mảnh.

Mỗi khối 64KiB được viết ở nơi không bị nén, nhưng nó có thể được nén, vì vậy ít nhất là <= 60KiB, sau đó nó ghi ít hơn 64KiB, khối tổ yến sẽ đi đến nơi mà nếu trước đó không có nén, vì vậy rất nhiều khoảng trống apèars.

Kiểm tra nó với một tệp nhiều gigabyte của máy virtusl của bất kỳ hệ thống cửa sổ nào (chúng có xu hướng giảm ở mức 50%, nhưng với số lượng lớn> 10000 mảnh).

Và đối với SSD có một cái gì đó không được nói, làm thế nào để nó viết? Ý tôi là, nếu nó viết nó không nén và sau đó ghi đè lên nó bằng phiên bản nén (cho mỗi khối lớn 64KiB), tuổi thọ của SSD bị cắt giảm rất nhiều; nhưng nếu nó ghi trực tiếp ở dạng nén, thì SSD live có thể là lo ger hoặc ngắn hơn .... lâu hơn nếu bạn viết 64KiB đó cùng một lúc, ngắn hơn, ngắn hơn nếu bạn viết 64KiB đó trong 4KiB, bởi vì nó sẽ ghi 64KiB (ở dạng nén) nhiều lần như 64/4 = 16 lần.

Hình phạt hiệu năng được gây ra do thời gian CPU cần nén / giải nén lớn hơn thời gian đạt được khi không cần ghi khối 4KiB ... vì vậy với CPU rất nhanh và nén đĩa rất chậm sẽ giảm thời gian ghi và đọc, nhưng nếu SSD là rất nhanh và CPU khá chậm, nó sẽ ghi chậm hơn nhiều.

Khi tôi nói về CPU nhanh hay chậm, ý tôi là vào lúc đó, CPU có thể được sử dụng bởi 'toán học' hoặc quy trình khác, vì vậy, mọi người đều nghĩ về cpu miễn phí, không phải trên thông số kỹ thuật CPU trên giấy, tương tự với đĩa / SSD, nó có thể được sử dụng bởi nhiều quá trình.

Giả sử bạn có 7Zip ghi một tệp khổng lồ từ một đĩa khác bằng LZMA2, nó sẽ sử dụng rất nhiều CPU, vì vậy nếu cùng lúc bạn sao chép tệp nén NTFS, nó không có CPU miễn phí, vì vậy nó sẽ chậm hơn so với không có NTFS nén, nhưng ngay sau khi 7Zip kết thúc sử dụng CPU, CPU đó sẽ có thể nén NTFS nhanh hơn và tại thời điểm đó, nén NTFS có thể thực hiện mọi việc nhanh hơn.

Cá nhân tôi không bao giờ sử dụng nén NTFS, tôi thích các thùng chứa PFO gắn tệp PISMO (có nén và nó cũng cho phép mã hóa, cả khi đang di chuyển và trong suốt cho các ứng dụng), nó cho tỷ lệ nén tốt hơn và ít ảnh hưởng đến CPU hơn, trong khi đó là đọc và viết khi đang bay, không cần giải nén trước khi sử dụng, chỉ cần gắn và sử dụng nó trong chế độ đọc và ghi.

Do PISMO thực hiện nén trên RAM trước khi ghi vào đĩa, nó có thể khiến SSD tồn tại lâu hơn, các thử nghiệm nén NTFS của tôi khiến tôi nghĩ rằng nó gửi dữ liệu vào đĩa hai lần, lần đầu tiên không nén và sau đó nếu nó có thể nén thì bị nén ở dạng nén .

Tại sao tốc độ ghi nén nén NTFS trên ổ SSD của tôi gần bằng 1/2 so với tốc độ không nén với các tệp hơn nén ở mức gần 1/2 kích thước hoặc kích thước nén thấp hơn? Trong AMD Threadripper 2950 (32 lõi và 64 luồng) với ram 128GiB (CPU nhanh, CPU rất nhanh) với mức sử dụng ít hơn 1%, do đó, có rất nhiều CPU để nén nhanh hơn tốc độ tối đa của SSD, có thể vì Quá trình nén NTFS bắt đầu sau khi các khối 64KiB được gửi vào đĩa không nén và sau đó được ghi đè bằng phiên bản nén ... oh nếu tôi làm điều đó trên một máy ảo chạy Linux trên máy chủ và Windows trên máy khách, thì bộ đệm Linux thông báo cho tôi các cụm như vậy được ghi hai lần và tốc độ nhanh hơn rất nhiều (Linux lưu vào bộ đệm NTFS không nén được gửi bởi khách Windows và vì sau khi chúng bị ghi đè bằng dữ liệu nén, linux không gửi dữ liệu không nén vào đĩa,

Tôi khuyên bạn, không sử dụng nén NTFS, ngoại trừ bên trong các máy ảo, khách sẽ chạy windows nếu máy chủ là Linux và không bao giờ nếu bạn sử dụng CPU rất nhiều nếu CPU của bạn không đủ nhanh.

SSD hiện đại có bộ đệm ram nội bộ rất lớn, do đó, ghi + ghi đè do nén NTFS có thể được giảm thiểu bằng hệ thống bộ nhớ cache bên trong SSD.

Các thử nghiệm của tôi khi thực hiện trên SSD "đẹp" không có RAM bên trong cho bộ nhớ cache bên trong SSD, khi tôi lặp lại chúng trên các bộ nhớ cache có bộ nhớ cache, tốc độ ghi là nhanh, nhưng không như mọi người nghĩ.

Tự kiểm tra và sử dụng kích thước tệp lớn (lớn hơn tổng số tam được cài đặt để tránh kết quả ẩn bộ đệm).

Nhân tiện, một số người không biết về tính năng nén NTFS ... bất kỳ tệp 4KiB nào trở xuống sẽ không bao giờ bị nén NTFS vì không có cách nào giảm kích thước tối thiểu 4KiB.

Sự kết hợp của NTFS mất hết 64KiB, nén chúng và nếu nó có thể giảm một cụm (4KiB) thì nó được nén bằng văn bản, 64KiB là 16 khối 4KiB (liên tiếp).

Nếu một tệp 8KiB khi quá trình nén kết thúc thì kết quả cuối cùng lớn hơn 4KiB, nó không lưu bất kỳ cụm nào, vì vậy nó được ghi không nén, ... và cứ thế ... pression phải đạt được ít nhất 4KiB.

Ah, và để nén NTFS, NTFS phải có kích thước cụm 4KiB.

Hãy thử và thực hiện kiểm tra: Sử dụng cụm 128KiB trên NTFS trên SSD, bạn sẽ thấy hiệu suất rất lớn được cải thiện khi ghi tốc độ đọc.

Các hệ thống tập tin trên SSD với cụm 4KiB đang mất rất nhiều tốc độ, trong hầu hết các trường hợp bị mất hơn 50% ... hãy xem bất kỳ điểm chuẩn nào ngoài đó kiểm tra với các kích thước khối khác nhau, từ 512Bytes lên đến 2MiB, hầu hết SSD ghi đôi tốc độ khi trên kích thước cụm 64KiB (hoặc 128KiB) so với trên 4KiB.

Muốn có một sự im lặng thực sự trên SSD của bạn? Không sử dụng cụm 4KiB trên hệ thống tập tin, sử dụng 128KiB.

Chỉ sử dụng cụm 4KiB nếu hơn 99% tệp của bạn dưới 128KiB.

Vv, vv, vv ... kiểm tra, thử nghiệm và kiểm tra trường hợp của riêng bạn.

Lưu ý: Tạo phân vùng NTFS hệ thống với Diskpart trong chế độ bảng điều khiển trong khi cài đặt Windows với cụm 128KiB hoặc từ một Windows khác, nhưng không để định dạng windows trong khi trên phần đồ họa của trình cài đặt (nó sẽ định dạng nó dưới dạng NTFS 4KiB cluster).

Tất cả Windows của tôi hiện được cài đặt trên phân vùng NTFS cụm 128KiB trên> 400GiB SSD (SLC).

Hy vọng mọi thứ sẽ rõ ràng, M $ không nói rằng iy đã viết NTFS được nén như thế nào, các thử nghiệm của tôi cho tôi biết nó viết hai lần (64KiB không nén, sau đó <= 60KiB đồng ý), không chỉ một lần (hãy cẩn thận nếu như trên SSD).

Chú ý: Windows cố gắng nén NTFS một số thư mục nội bộ, cho dù bạn nói không nén NTFS, cách duy nhất để tránh như vậy nếu có kích thước cụm NFTS khác với 4KiB, vì nén NTFS chỉ hoạt động trên phân vùng NTFS kích thước cụm 4KiB


2
Chào mừng bạn đến với Siêu người dùng! Câu trả lời của bạn có thể được cải thiện với một bản tóm tắt trực tiếp giải quyết truy vấn của OP :)
bertieb

Một ý tưởng thú vị sử dụng các cụm lớn hơn, nhưng nó cũng sẽ dẫn đến việc khuếch đại ghi với SSD, phải không? Đơn giản vì bất kỳ tệp nào nhỏ hơn 128k vẫn sẽ chiếm 128k trên đĩa. Hoặc Windows có đủ thông minh để không cam kết bất kỳ ghi vật lý nào ngoài kích thước dữ liệu thực tế của tệp không?
Hươu cao cổ Violet

0

Tôi thấy những bình luận của người khác và tôi nghĩ mọi người thường quên đi kịch bản hữu ích nhất khi nén tệp / thư mục NTFS có lợi thế lớn trên SSD: các công cụ phát triển hiện đại. Matlab được cấp phép đại học của tôi có trong thư mục cài đặt (chỉ dành cho người dùng thông thường chỉ đọc) với số lượng dữ liệu sau:

Dữ liệu 28,5 GB Kích thước 30,6 GB trên đĩa Chứa 729.246 tệp và 15.000 thư mục (!!!)

Đây là trên máy tính xách tay của tôi có SSD 500 GB, trong đó phân vùng windows là 200 GB.

Tôi biết Matlab hơi cực về vấn đề này, nhưng nhiều devtools có các thuộc tính tương tự: một tấn tệp văn bản nhỏ, có khả năng nén cao (tiêu đề, mã, tệp XML). Tôi đang nén Matlab ngay bây giờ trước khi cài đặt devtool Intel QuartusOctave đã được nén như sau:

Kích thước dữ liệu 1,55 GB trên đĩa: 839 GB Chứa 34.362 tệp 1.955 thư mục

Công cụ này được viết một lần và đọc hàng trăm lần trong quá trình xây dựng dự án. Thật hoàn hảo khi sử dụng một số năng lượng CPU để giải nén nó và tiết kiệm khoảng một nửa dung lượng SSD quý giá của bạn.


-1

Bạn cần điểm chuẩn hai lần để biết. Nén. Không nén. Quên mặc trên SSD. Bạn cần một ssd và CPU nhanh để không xảy ra tắc nghẽn.

Một ổ SSD 512gb là 50 đô la những ngày này. Truy cập đĩa nhanh nhất đối với tôi cho đến nay là sử dụng Linux khi có thể và cơ chế xếp hàng đĩa LIFO. Thay vì CFQ.

Windows 10 tạo hoạt động đĩa vô hạn với ram 12GB được cài đặt trên máy tính xách tay của tôi. Linux tải bạc hà và truy cập đĩa gần như bằng không xảy ra sau. Trừ khi bạn khởi xướng nó. Windows chỉ có một cách để giữ cho nó bận rộn mà không có nhiệm vụ rõ ràng.


Raid 0 trên 2 SSD có thể là 800 MB / giây.
Mauricio Guerrero
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.