CCoW: Tối ưu hóa tính năng sao chép khi ghi có tính đến vị trí không gian trong khối lượng công việc Phần 1
Apr 02, 2024
Trừu tượng:
Sao chép khi ghi (CoW) là một kỹ thuật quản lý bộ nhớ thiết yếu cho phép chia sẻ trang hiệu quả giữa các quy trình. Cụ thể, khi kết hợp CoW với lệnh gọi hệ thống fork, các ứng dụng, ngay cả với dung lượng bộ nhớ lớn, vẫn có thể chụp ảnh nhanh dữ liệu trong bộ nhớ hiện tại với chi phí thấp.
Dữ liệu bộ nhớ đề cập đến dữ liệu được lưu trữ trong bộ nhớ máy tính. Mặc dù nó khác với trí nhớ của con người nhưng giữa chúng có một mối liên hệ nhất định.
Đầu tiên, dữ liệu bộ nhớ có thể thúc đẩy sự phát triển trí nhớ của con người. Ví dụ: chúng ta có thể sử dụng các chức năng ghi, lưu trữ và truy xuất của máy tính để giúp chúng ta học, ghi nhớ và hiểu kiến thức. Công nghệ hiện đại cung cấp cho chúng ta những cách ghi nhớ và học tập hiệu quả hơn, đảm bảo rằng chúng ta có thể nắm vững kiến thức và kỹ năng tốt hơn.
Thứ hai, dữ liệu bộ nhớ cũng có thể giúp mọi người quản lý ký ức của mình tốt hơn. Bằng cách tổ chức và phân loại dữ liệu gọn gàng, chúng ta có thể tìm và nhớ lại những thông tin cần nhanh chóng hơn, điều này rất quan trọng đối với cuộc sống, công việc và học tập của chúng ta.
Quan trọng nhất, dữ liệu trong bộ nhớ ngăn chặn tình trạng mất trí nhớ của con người. Trí nhớ của con người dần yếu đi theo thời gian, một quá trình được gọi là “quên”. Tuy nhiên, bằng cách lưu trữ dữ liệu trên ổ cứng máy tính, chúng ta có thể đảm bảo rằng thông tin và ký ức chúng ta cần có thể được giữ lại và lấy lại bất cứ lúc nào.
Vì vậy, mối quan hệ giữa dữ liệu bộ nhớ và trí nhớ con người có thể nói là tích cực. Dù chúng ta không nên phụ thuộc quá nhiều vào công nghệ nhưng việc sử dụng hợp lý dữ liệu trí nhớ có thể nâng cao hiệu quả công việc và kết quả học tập, giúp chúng ta quản lý trí nhớ tốt hơn, chống quên. Có thể thấy, chúng ta cần cải thiện trí nhớ, và Cistanche Deserticola có thể cải thiện trí nhớ đáng kể vì Cistanche Deserticola là một dược liệu cổ truyền của Trung Quốc có nhiều tác dụng độc đáo, một trong số đó là cải thiện trí nhớ. Hiệu quả của Cistanche Deserticola đến từ nhiều thành phần hoạt chất có trong nó, bao gồm axit tannic, polysaccharides, flavonoid glycoside, v.v. Những thành phần này có thể tăng cường sức khỏe não bộ thông qua nhiều con đường khác nhau.

Bấm biết 10 cách cải thiện trí nhớ
Tuy nhiên, vì CoW diễn ra trên mỗi trang trong trình xử lý lỗi trang nên mỗi lần xảy ra lỗi trang, hệ điều hành sẽ tham gia. Điều này dẫn đến sự suy giảm hiệu suất đáng kể đối với khối lượng công việc đòi hỏi nhiều khả năng ghi.
Bài viết này đề xuất sao chép-ghi dựa trên phạm vi bảo hiểm (CCoW), một sơ đồ CoW được tối ưu hóa xem xét vị trí truy cập bộ nhớ để giảm thiểu vấn đề của CoW. CCoW đo lường vị trí không gian trong không gian địa chỉ quy trình bằng khái niệm phạm vi bao phủ.
Trong khi xử lý CoW, CCoW sao chép trước nhiều trang cho các vùng bộ nhớ có tính cục bộ cao, nhờ đó giảm thiểu sự tham gia của HĐH đối với khối lượng công việc ghi nhiều. Chúng tôi giải thích những thách thức trong việc đo lường địa phương và cung cấp giải pháp tối ưu hóa để triển khai ý tưởng này.
Đánh giá bằng nguyên mẫu chứng minh rằng phương pháp này có thể cải thiện hiệu suất tổng thể của ứng dụng lên tới 10% với một lượng nhỏ chi phí bộ nhớ.
Từ khóa: sao chép trên ghi; hệ thống bộ nhớ ảo; cái nĩa; Làm lại; Lỗi trang.
1. Giới thiệu
Vai trò chính của hệ điều hành (OS) là quản lý các tài nguyên hệ thống quý giá và sao chép khi ghi (CoW) là một trong những kỹ thuật quản lý bộ nhớ cơ bản nhất được hầu hết các hệ điều hành hiện đại áp dụng.
Khi hai hoặc nhiều quy trình cần có cùng một dữ liệu, sơ đồ CoW cho phép các quy trình chia sẻ các trang giống nhau thay vì sao chép các trang ngay lập tức. Các trang được chia sẻ được sao chép theo yêu cầu, chỉ khi một trong các quy trình ghi vào các trang được chia sẻ.
Hệ thống bộ nhớ ảo có thể cung cấp tính năng chia sẻ dữ liệu giữa các quy trình một cách hiệu quả và các tính năng bộ nhớ ảo khác nhau, chẳng hạn như sao chép không gian địa chỉ trong quá trình phân nhánh, loại bỏ trùng lặp các trang giống nhau và chia sẻ trang bằng 0, được triển khai dựa trên tính năng sao chép khi ghi [1–3]. Nhờ những tính năng này, các ứng dụng có thể tạo một bản sao của chính chúng với chi phí không gian thấp và sử dụng bản sao một cách thích hợp.
Ví dụ: Redis, một trong những hệ thống lưu trữ khóa-giá trị trong bộ nhớ phổ biến [4], sử dụng tính năng sao chép khi ghi kết hợp với hệ thống phân nhánh để gọi dữ liệu trong bộ nhớ được lưu trữ lâu dài vào bộ lưu trữ. Trong khi phục vụ các yêu cầu gửi đến, quy trình chính của Redis sẽ định kỳ sinh ra một quy trình con bằng ngã ba. Quy trình con bắt đầu bằng ảnh chụp nhanh bộ nhớ giống hệt quy trình chính để lưu dữ liệu trong bộ nhớ vào bộ lưu trữ.

Vì ảnh chụp nhanh được tách biệt khỏi không gian địa chỉ của quy trình chính nhưng được quản lý bởi sao chép khi ghi, nên quy trình chính và quy trình con không yêu cầu bất kỳ cơ chế phức tạp nào để duy trì tính nhất quán giữa dữ liệu hiện tại và ảnh chụp nhanh.
Vì vậy, chúng ta có thể coi rằng tính năng sao chép khi ghi là điều cần thiết trong hệ thống bộ nhớ ảo. Tuy nhiên, tính năng sao chép khi ghi hiện tại đang gặp vấn đề trong các ứng dụng sử dụng nhiều bộ nhớ với khối lượng công việc đòi hỏi nhiều chức năng ghi. Cụ thể, việc sao chép dữ liệu thường xảy ra trong trình xử lý lỗi trang trong hệ điều hành. Do việc sao chép dữ liệu được xử lý trên mỗi trang, với nhiều lần ghi, quá trình này có thể gây ra một số lượng đáng kể lỗi trang.
Hệ điều hành có liên quan đến lỗi từng trang, dẫn đến việc chuyển đổi chế độ nhân-người dùng thường xuyên. Xem xét dấu chân bộ nhớ khổng lồ của các ứng dụng sử dụng nhiều bộ nhớ, số lượng chuyển đổi chế độ là lớn.
Ngoài ra, bảng trang còn bị sửa đổi trong quá trình sao chép, điều này dẫn đến việc tất cả các lõi trong hệ thống bị hỏng bộ đệm dịch chuyển (TLB). Tất cả những điều này đều phát sinh chi phí không đáng kể và làm giảm hiệu suất của ứng dụng.
Bài viết này đề xuất tính năng sao chép trên ghi (CCoW) dựa trên phạm vi bảo hiểm, một sơ đồ tối ưu hóa sao chép khi ghi mới. Khi một trang được truy cập để ghi, các trang lân cận của nó cũng có khả năng sớm được truy cập để ghi do vị trí không gian trong truy cập bộ nhớ. CCoW khai thác vị trí không gian để giảm số lượng lỗi trang khi sao chép khi ghi. Cụ thể, CCoW xử lý việc sao chép khi ghi ở mức độ chi tiết lớn (được gọi là vùng).
Bằng cách sao chép nhiều trang trong trình xử lý lỗi trang, CCoW có thể giảm một số lượng đáng kể lỗi trang đối với thao tác sao chép khi ghi và các chi phí đi kèm. Tuy nhiên, mức độ không gian cục bộ rất khác nhau tùy thuộc vào vị trí trong không gian địa chỉ tiến trình và việc sao chép các phần có tính cục bộ thấp của bộ nhớ chỉ gây ra chi phí về mặt thời gian và không gian.
Để khắc phục thiếu sót này, chúng tôi đề xuất một cơ chế chính xác với chi phí thấp để đánh giá vị trí không gian trong không gian địa chỉ quy trình. CCoW đếm số lượng bản sao khi ghi và ghi trong mỗi khu vực.
Bằng cách mang thông tin địa phương qua các nhánh, chúng tôi có thể ước tính mức độ địa phương không gian và CCoW thực hiện hiệu quả việc chỉ định sẵn cho các khu vực có địa phương cao. Chúng tôi đã triển khai sơ đồ CCoW được đề xuất trong nhân Linux.
Khi được tích hợp vào hệ thống bộ nhớ ảo của hệ điều hành, các ứng dụng có thể hưởng lợi từ CCoW mà không cần sửa đổi. Chúng tôi đã phân tích các đặc tính hiệu suất bằng điểm chuẩn vi mô và đánh giá bằng cách sử dụng điểm chuẩn với khối lượng công việc thực tế cho thấy CCoW có thể cải thiện hiệu suất ứng dụng lên tới 10% với mức chi phí bộ nhớ hợp lý.

Phần còn lại của bài viết này được tổ chức như sau. Trong Phần 2, chúng tôi tổng quan về bối cảnh và công việc liên quan của bài báo, bao gồm cả bộ nhớ ảo và phân nhánh. Chúng tôi giải thích chi tiết về thiết kế CCoW và cách triển khai nó trong Phần 3. Phần 4 trình bày kết quả đánh giá CCoW. Cuối cùng, chúng tôi kết luận bài viết này trong Phần 5.
2. Bối cảnh và công việc liên quan
2.1. Phân trang và bộ nhớ ảo
Hầu hết tất cả các máy tính và hệ điều hành hiện đại đều áp dụng phân trang và bộ nhớ ảo làm sơ đồ quản lý bộ nhớ chính của chúng [5]. Bộ nhớ chính được chia thành các trang có cùng kích thước và hệ điều hành phân bổ hoặc giải phóng bộ nhớ khỏi các tiến trình của người dùng trong đơn vị trang.
Các hệ điều hành cũng duy trì ánh xạ không gian địa chỉ của các tiến trình tới vị trí vật lý trên hệ thống. Mỗi trang logic trong không gian địa chỉ tiến trình được ánh xạ tới vị trí vật lý của nó và ánh xạ này được lưu trữ dưới dạng bảng trang.
Để xử lý tham chiếu bộ nhớ cho một tiến trình, đơn vị quản lý bộ nhớ (MMU), một thành phần phần cứng trong bộ xử lý, sẽ dịch địa chỉ được yêu cầu sang địa chỉ vật lý của nó bằng cách tham chiếu đến bảng phân trang. Bảng trang bao gồm các mục trong bảng trang (PTE). Mỗi PTE chứa thông tin ánh xạ và có thể có các trường bổ sung để mô tả trạng thái của trang và ánh xạ tương ứng.
Kích thước trang, mặc dù theo kiến trúc cụ thể, thường là 4 KB trong hầu hết các kiến trúc. Điều này ngụ ý rằng mỗi 4 KB trong không gian địa chỉ tiến trình phải có một PTE. Xem xét kích thước khổng lồ của không gian địa chỉ tiến trình, kích thước của bảng trang, thậm chí đối với một tiến trình đơn lẻ, có thể rất lớn.
Ví dụ: bảng trang cho một quy trình trong kiến trúc bit 64-với các trang 4 KB và 8-byte PTE sẽ có kích thước 32 PB (264/212 × 8=255 byte). Tuy nhiên, không gian địa chỉ thường có mật độ dân cư thưa thớt và hầu hết không gian địa chỉ là không cần thiết.
Điều này làm sáng tỏ tổ chức phân cấp của bảng trang. Toàn bộ bảng trang được chia thành các phần bảng trang phù hợp trên một trang. Các phần của bảng trang không được phân bổ vào các vùng địa chỉ không được phân bổ.

Các phần bảng trang được điền sẵn có thể được tóm tắt thành các phần bảng trang ở cấp độ cao hơn. Việc chuyển tiếp này được lặp lại cho đến khi chỉ còn các phần trên một trang tồn tại, do đó cho phép tạo ra một bảng trang có dạng nhỏ gọn.
For more information:1950477648nn@gmail.com






