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 2

Apr 02, 2024

Kích thước trang nhỏ có thể gây ra vấn đề khi hệ thống có khả năng xử lý một lượng lớn bộ nhớ vật lý. Với tổ chức bảng trang phân cấp, mỗi bản dịch địa chỉ ảo yêu cầu nhiều quyền truy cập bộ nhớ, một truy cập cho mỗi cấp độ bảng trang, điều này không thể chấp nhận được.

Khi con người già đi, trí nhớ dần suy giảm. Tuy nhiên trí nhớ vật lý không phải là một trong những yếu tố ảnh hưởng trực tiếp đến trí nhớ của chúng ta. Trí nhớ có liên quan đến sức mạnh của các kết nối giữa các tế bào thần kinh trong não, sức khỏe của não và tần suất sử dụng trí nhớ.

Trong não của chúng ta, các tế bào thần kinh được kết nối bằng các khớp thần kinh. Những khớp thần kinh này khuyến khích chúng ta lưu trữ và truy xuất thông tin. Tuy nhiên, khi chúng ta già đi, các kết nối khớp thần kinh này giảm đi, khiến trí nhớ của chúng ta kém đi. Điều này không phải do trí nhớ vật lý của chúng ta bị suy giảm mà là do bộ não của chúng ta đang trải qua những thay đổi nhất định ảnh hưởng đến khả năng của chúng ta.

Tuy nhiên, việc sử dụng bộ não có thể giúp chúng ta duy trì những ký ức tốt đẹp. Não cần tập thể dục, cũng giống như cơ thể, nó cần sự thư giãn và tập thể dục để luôn khỏe mạnh. Phát triển thói quen tư duy tốt sẽ giúp ích cho sức khỏe và hiệu quả của bộ não. Ví dụ, học những điều mới, sử dụng các kỹ thuật ghi nhớ, chơi các câu đố logic, v.v. đều có thể cải thiện chất lượng và hiệu quả của bộ não của bạn.

Vì vậy, trí nhớ vật lý đơn giản là khả năng lưu trữ sẵn có của não. Trí nhớ của chúng ta gắn chặt với những giới hạn mà bộ não chúng ta có thể đạt được. Bằng cách liên tục rèn luyện trí não, chúng ta có thể làm cho trí nhớ bền bỉ hơn và duy trì nó ở mức cao. Để cải thiện trí nhớ, chúng ta nên tập trung vào việc rèn luyện trí não đồng thời duy trì thái độ tích cực và thói quen tốt cho sức khỏe. Có thể thấy rằng chúng ta cần cải thiện trí nhớ, và Cistanche Deserticola có thể cải thiện đáng kể trí nhớ, bởi vì Cistanche Deserticola có tác dụng chống oxy hóa, chống viêm và chống lão hóa, có thể giúp làm giảm quá trình oxy hóa và các phản ứng viêm trong não, từ đó bảo vệ cơ thể. sức khỏe của hệ thần kinh. Ngoài ra, Cistanche Deserticola cũng có thể thúc đẩy sự phát triển và sửa chữa các tế bào thần kinh, do đó tăng cường khả năng kết nối và chức năng của mạng lưới thần kinh. Những tác động này có thể giúp cải thiện trí nhớ, tốc độ học tập và tư duy, đồng thời cũng có thể ngăn ngừa sự phát triển của rối loạn chức năng nhận thức và các bệnh thoái hóa thần kinh.

increase brain power

Bấm vào biết cách cải thiện chức năng não

Để giảm thiểu chi phí cao của việc dịch địa chỉ ảo sang vật lý, nhiều kiến ​​trúc hiện đại kết hợp bộ nhớ đệm để dịch địa chỉ. MMU lưu giữ một số kết quả dịch gần đây trong logic phần cứng được gọi là bộ đệm dịch sang một bên, còn được gọi là TLB.

Thông thường, TLB của kiến ​​trúc hiện đại có thể chứa khoảng 500 đến 2000 mục [6,7]. Các mục được lập chỉ mục bằng phần cứng để bộ xử lý có thể tra cứu bản dịch rất nhanh. Bằng cách tận dụng vị trí của các tham chiếu bộ nhớ, nhiều bản dịch địa chỉ có thể được thực hiện mà không cần duyệt qua bảng phân trang (được gọi là lần truy cập TLB).

Khi dung lượng bộ nhớ dành cho các ứng dụng sử dụng nhiều bộ nhớ tăng lên nhanh chóng, số lượng ánh xạ trang ảo sang vật lý cho một quy trình cũng tăng lên. Tuy nhiên, do hạn chế về phần cứng, số lượng mục TLB không thể theo kịp sự tăng trưởng nhanh chóng của dung lượng bộ nhớ ứng dụng. Do đó, tỷ lệ bỏ lỡ TLB tăng lên, gây ra tắc nghẽn về hiệu suất của các ứng dụng sử dụng nhiều bộ nhớ [8–11].

Để khắc phục hạn chế này, một số kiến ​​trúc hỗ trợ kích thước trang bổ sung lớn hơn kích thước của trang cơ sở 4 KB. Ví dụ: kiến ​​trúc Intel hiện đại hỗ trợ kích thước trang 2 MB và 1 GB [7]. Với kích thước trang khổng lồ như vậy, một bản dịch địa chỉ có thể bao phủ phạm vi địa chỉ rộng hơn, tăng phạm vi phủ sóng mà TLB có thể cung cấp một cách hiệu quả với cùng số lượng mục nhập.

Ví dụ: một hệ thống có 1024 mục TLB và kích thước trang cơ sở 4 KB có thể cung cấp phạm vi bảo hiểm TLB là 4 MB, trong khi cùng số lượng mục nhập với các trang lớn 1 GB cung cấp phạm vi bao phủ 1 TB. Linux sử dụng trang lớn ở dạng các trang lớn trong suốt (THP). Đúng như tên gọi, Linux ngầm cung cấp cho quy trình người dùng các trang khổng lồ bất cứ khi nào có thể.

Nếu THP không được bật, Linux sẽ phân bổ bộ nhớ cho các tiến trình trong đơn vị trang cơ sở 4 KB. Nếu THP được bật, Linux sẽ cố gắng phân bổ một trang lớn (kích thước 2 MB) thay vì trang cơ sở, cho phép ánh xạ trang chi tiết thô. Độ chi tiết lớn này cho phép chia sẻ trang hiệu quả giữa các tiến trình cha và con thông qua nhánh. Trong trường hợp việc phân bổ trang lớn không khả thi vào lúc này, Linux sẽ quay lại phân bổ trang cơ sở. Linux quét định kỳ các không gian địa chỉ của quy trình để tìm các trang cơ sở và hợp nhất chúng thành các trang khổng lồ.

improve your memory

Đã có những nghiên cứu cố gắng nâng cao hiệu suất của các trang lớn trong khi che giấu những thiếu sót của chúng hơn nữa. Ingens [12,13] đề xuất chuẩn bị không đồng bộ các trang lớn ngoài đường găng.

Hawkeye [14] trình bày một sơ đồ quảng cáo trang khổng lồ chi tiết dựa trên các mẫu truy cập bộ nhớ để tối đa hóa hiệu suất với số lượng quảng cáo trang khổng lồ tối thiểu. Zhu và cộng sự. [15] khái quát hóa quy trình sử dụng các trang lớn và tối ưu hóa vòng đời của các trang lớn. Phần và cộng sự. [16] cho phép tạo lỗ hổng trên các trang lớn, mang lại sự linh hoạt trong việc quản lý bộ nhớ với các trang lớn.

Tuy nhiên, trang khổng lồ này là một thanh kiếm hai lưỡi. Do kích thước đơn vị quản lý tăng lên, việc phân bổ trang bị phân mảnh nội bộ. Nếu dải địa chỉ được phân bổ nhỏ hơn kích thước trang khổng lồ thì phần còn lại của trang sẽ không thể được sử dụng và bị lãng phí. Cái gọi là phình bộ nhớ này có thể làm giảm đáng kể việc sử dụng bộ nhớ trên các hệ thống có trang lớn [12–17].

Kích thước trang tăng lên cũng có thể ảnh hưởng tiêu cực đến hiệu suất của chương trình. Các hệ điều hành hiện đại áp dụng rộng rãi sơ đồ sao chép khi ghi để chia sẻ bộ nhớ hiệu quả giữa các tiến trình. Tuy nhiên, CoW chỉ được xử lý ở mức độ chi tiết của trang cơ sở.

Do đó, để xử lý CoW trên một trang lớn, trang lớn được chia thành các trang cơ sở và chỉ sao chép trang bị lỗi. Việc phá vỡ các trang lớn mất một lượng thời gian đáng kể, dẫn đến việc xử lý lỗi trang dài không liên tục. Theo nghĩa này, một số ứng dụng, ngay cả những ứng dụng sử dụng nhiều bộ nhớ, không khuyến nghị sử dụng các trang lớn để có hiệu suất ổn định và sử dụng bộ nhớ [4,18].

Nói chung, có nhiều phạm vi không gian địa chỉ trong không gian địa chỉ tiến trình trong đó tất cả các trang trong phạm vi đó đều có cùng quyền và đặc điểm. Để quản lý, các hệ điều hành hiện đại thường áp dụng khái niệm 'vùng bộ nhớ ảo (VMA)' để thể hiện các phạm vi không gian địa chỉ như vậy. Chúng ta có thể phân loại các trang trong không gian địa chỉ tiến trình theo nguồn gốc của chúng.

improving brain function

Một số trang có thể được tải từ tệp sao lưu trên bộ lưu trữ thứ cấp, được gọi là 'các trang được sao lưu bằng tệp'. Trong khi đó, một số trang được điền động mà không có bất kỳ dữ liệu hỗ trợ nào. Các trang cho ngăn xếp và đống trong trường hợp này được gọi là 'trang ẩn danh'.

2.2. Ngã ba và sao chép khi ghi

Fork là một trong các lệnh gọi hệ thống tiêu chuẩn POSIX để tạo một quy trình mới. Khi một quy trình gọi lệnh gọi hệ thống fork, một quy trình mới sẽ được tạo với tư cách là quy trình con của quy trình gọi.

Bên trong, hệ điều hành tạo ra tiến trình con bằng cách sao chép toàn bộ không gian địa chỉ của tiến trình gọi. Điều này ngụ ý rằng tiến trình con phải bắt đầu với cùng dữ liệu với tiến trình cha.

Để xử lý sao chép không gian địa chỉ một cách hiệu quả, hầu hết các hệ điều hành hiện đại đều sử dụng kỹ thuật sao chép khi ghi (CoW). Để nhân đôi không gian địa chỉ của trang mẹ, hệ điều hành không sao chép từng trang. Thay vào đó, bảng trang của tiến trình con được xây dựng bằng cách sao chép bảng trang của tiến trình cha.

Điều này tạo ra một ánh xạ chia sẻ tới không gian địa chỉ của cấp độ gốc một cách hiệu quả. Trong khi thực hiện ánh xạ chia sẻ, quyền ghi cho mỗi trang sẽ bị loại bỏ bằng cách xóa bit quyền trong PTE tương ứng.

Sau khi sao chép ánh xạ, cả cha mẹ và con cái đều có thể đọc các trang được chia sẻ dưới dạng trang của họ. Khi một trong các quy trình thực hiện quyền truy cập ghi vào một trang, MMU, do thiếu quyền ghi, sẽ gây ra lỗi trang. Trong trình xử lý lỗi trang, HĐH phân bổ một trang mới, sao chép trang gốc và cập nhật ánh xạ trang tương ứng của quy trình gây ra lỗi với sự cho phép bằng văn bản.

Tại thời điểm này, cha và con có thể có dữ liệu khác nhau trên cùng một địa chỉ ảo. Cơ chế sao chép khi ghi này được sử dụng rộng rãi làm cơ chế khóa cơ bản để hiện thực hóa nhiều tính năng bộ nhớ ảo. Cụ thể, việc đọc các vùng heap không được khởi tạo thường được xử lý bằng ánh xạ chia sẻ tới trang 0, đây là một trang đặc biệt chứa tất cả các số 0.

Hợp nhất cùng một trang hạt nhân (KSM) là kỹ thuật loại bỏ trùng lặp các trang giống nhau trong hệ thống. Hệ điều hành quét các trang trong hệ thống để xác định các trang có dữ liệu giống hệt nhau. Khi tìm thấy những trang như vậy, hệ điều hành sẽ lấy lại tất cả trừ một trang và cập nhật các bảng trang tương ứng để chia sẻ trang còn lại.

Trong quá trình xử lý, quyền ghi bị loại bỏ để quyền truy cập ghi tiếp theo vào trang được xác định và sao chép. Với hiệu suất cao của tính năng sao chép khi ghi, việc tạo quy trình trở nên hiệu quả và một số ứng dụng sử dụng nhiều dữ liệu tận dụng lợi thế này để tạo bản sao dữ liệu .

Redis, một trong những dịch vụ lưu trữ khóa-giá trị trong bộ nhớ phổ biến [4], là một trong những trường hợp như vậy [19]. Redisis được thiết kế chủ yếu để lưu giữ dữ liệu trong bộ nhớ nhằm cung cấp thông lượng cao và độ trễ thấp.

Tuy nhiên, một số ứng dụng yêu cầu tính bền vững của dữ liệu được lưu trữ và Hoàn thiện lại thiết kế trong bộ nhớ bằng một nhánh. Redis chỉ áp dụng các yêu cầu gửi đến cho chỉ mục trong bộ nhớ và cấu trúc dữ liệu, đồng thời gọi lệnh gọi hệ thống phân nhánh theo định kỳ. Điều này tạo ra một quy trình con một cách hiệu quả với nội dung bộ nhớ trùng lặp của Redisprocess ban đầu và quy trình gọi (tức là quy trình ban đầu) tiếp tục xử lý các yêu cầu gửi đến.

Quá trình con chuyển hướng thực thi của nó; bằng cách sử dụng nội dung bộ nhớ hiện tại làm ảnh chụp nhanh, nó tuần tự hóa các cấu trúc dữ liệu trong bộ nhớ thành các tệp, nhờ đó đảm bảo tính ổn định của ảnh chụp nhanh trong bộ nhớ. Sau khi xóa ảnh chụp nhanh, quá trình con kết thúc.

Quá trình ban đầu có thể tạo một ảnh chụp nhanh khác theo cách tương tự và khi hệ thống gặp sự cố, Redis có thể được phục hồi bằng cách đọc ảnh chụp nhanh cuối cùng. Mặc dù fork là một lệnh gọi hệ thống vô giá nhưng chi phí hoạt động của nó đã bị chỉ trích.

supplements to boost memory

Baumann và cộng sự. [20] đã phân tích fork và phát hiện ra rằng fork gây ra sự suy giảm hiệu suất trong các ứng dụng hiện đại. Ví dụ: khi các ứng dụng hiện đại trở nên phức tạp hơn, HĐH sẽ xem xét khoảng 25 trường hợp đặc biệt để bắt đầu xử lý lệnh gọi hệ thống fork để tuân thủ đặc tả POSIX. Họ tóm tắt các vấn đề của lệnh gọi hệ thống fork và đề xuất các tính năng mà lệnh gọi hệ thống fork nên có cho máy tính hiện đại.

Họ cũng cung cấp các cách thay thế phuộc khác. Zhao và cộng sự. [19] đã chỉ ra rằng việc triển khai phân nhánh trong các hệ thống hiện tại là không hiệu quả do các ứng dụng có dung lượng bộ nhớ lớn cần nhiều thời gian để thiết lập bảng trang. Như một giải pháp, họ đã khái quát hóa kỹ thuật sao chép khi ghi để bảng trang được sao chép khi ghi cũng như các trang thông thường.


For more information:1950477648nn@gmail.com

Bạn cũng có thể thích