CCoW: Mengoptimumkan Copy-on-Write Memandangkan Lokasi Spatial dalam Beban Kerja Bahagian 4
Apr 03, 2024
3.3. Akses Penjejakan kepada Halaman Prasalinan
CCoW sepatutnya melunaskan overhed untuk overhed pengendalian kesalahan halaman yang kerap. Walau bagaimanapun, menyalin halaman terlebih dahulu membawa kepada isu lain: halaman penjejakan mengakses selepas salinan.
Terdapat hubungan yang kuat antara pemprosesan ralat dan ingatan. Bagi kebanyakan orang, kesilapan sering dilihat sebagai perkara yang buruk, tetapi ia boleh menjadi peluang untuk kita belajar dan berkembang. Dengan mengendalikan ralat dengan betul, kita boleh meningkatkan ingatan kita dan membantu kita lebih memahami dan bertindak balas terhadap situasi yang serupa.
Salah satu cara untuk menangani kesilapan adalah dengan merenung dan menganalisis. Apabila kita melakukan kesilapan, kita harus mengambil masa untuk merenung bagaimana kesilapan itu berlaku dan apa yang boleh kita lakukan untuk mengelakkan kesilapan yang sama berulang. Melalui refleksi, kita boleh mengenal pasti punca masalah dan membangunkan langkah balas untuk menyelesaikannya. Analisis jenis ini bukan hanya mengenai kesilapan, ia boleh membantu kita membuat keputusan yang lebih baik dalam situasi kehidupan lain dan membantu kita meningkatkan kemahiran dan kebolehan kita.
Satu lagi cara untuk menangani kesilapan adalah dengan membenarkan diri anda menerimanya dan teruskan. Kita tidak seharusnya membiarkan kesilapan melambatkan kita atau mengecewakan kita. Sebaliknya, kita harus melihatnya sebagai peluang untuk berkembang, membenarkan diri kita belajar daripada kesilapan kita dan terus bertambah baik. Jika kita boleh menerima kesilapan dan menanganinya dengan sikap positif, kita boleh membina minda dan keyakinan diri yang kuat, yang sangat penting untuk mengekalkan ingatan yang baik.
Akhirnya, kita boleh menguatkan ingatan kita dengan berkongsi kesilapan kita. Apabila kita memberitahu orang lain tentang kesilapan yang telah kita lakukan, kita cenderung untuk mengingati peristiwa tersebut dengan lebih mendalam. Ini kerana apabila kita memberitahu orang lain, kita perlu membuat perkara lebih jelas dan mengingati setiap butiran kesilapan. Dengan cara ini kita boleh lebih memahami kesilapan ini dan mengelakkannya daripada berulang.
Ringkasnya, terdapat hubungan yang kuat antara pemprosesan ralat dan ingatan. Dengan mengendalikan kesilapan dengan betul, kita boleh menguatkan ingatan kita, meningkatkan kemahiran dan kebolehan kita, dan menjadi orang yang lebih baik. Kita harus menganggap kesilapan sebagai peluang, secara aktif menghadapi kesukaran, dan belajar dan berkembang daripadanya. Ia dapat dilihat bahawa kita perlu meningkatkan daya ingatan, dan Cistanche deserticola boleh meningkatkan daya ingatan dengan ketara kerana Cistanche deserticola adalah bahan perubatan tradisional Cina yang mempunyai banyak kesan unik, salah satunya adalah untuk meningkatkan daya ingatan. Keberkesanan Cistanche deserticola berasal daripada pelbagai bahan aktif yang terkandung di dalamnya, termasuk asid tannic, polisakarida, glikosida flavonoid, dll. Bahan-bahan ini boleh menggalakkan kesihatan otak melalui pelbagai laluan.

Klik Tahu Memori Jangka Pendek cara menambah baik
Dalam skema copy-on-write asal, tulisan pertama pada setiap halaman ditangkap oleh pengendali kesalahan halaman.
Hanya halaman yang rosak disalin, dan sistem boleh menjejaki setiap capaian halaman dengan tepat melalui pengendali kesalahan halaman. Sebaliknya, apabila sistem menyalin seluruh rantau, semua halaman di rantau ini dipetakan kepada proses dengan kebenaran bertulis.
Oleh itu, penulisan seterusnya ke halaman yang disalin itu boleh dilakukan tanpa mencetuskan mekanisme pengendalian kerosakan halaman, jadi sistem tidak dapat menjejaki akses kepada halaman yang disalin. Ini boleh menjadi masalah apabila proses melakukan garpu berulang kali. Katakan aregion mempunyai lokaliti spatial yang tinggi dan zaman ditakrifkan sebagai tempoh antara dua garpu.
Lokaliti tinggi boleh ditangkap dengan mengira kerosakan halaman yang berlaku di rantau ini. Kemudian andaikan bahawa proses itu mencipta proses baharu dengan garpu. Apabila zaman baharu dimulakan dengan garpu, akses tulis pertama ke salah satu halaman di rantau ini akan memulakan CCoW, menyalin semua halaman di rantau ini. Kini proses itu mempunyai semua halaman dengan kebenaran menulis, dan tiada lagi ralat halaman dijana dari rantau ini sehingga akhir zaman.
Apabila zaman baru dimulakan semula, rantau ini dianggap mempunyai liputan yang rendah dalam zaman itu, memandangkan rantau ini hanya mempunyai satu halaman salin atas tulis. Oleh itu, setiap penulisan ke rantau ini diproses melalui mekanisme salin atas tulis asal setiap halaman, sekali gus menjejaskan peluang pengoptimuman prestasi walaupun rantau itu mempunyai lokaliti yang tinggi.
Ambil perhatian bahawa rantau itu dianggap mempunyai lokaliti yang tinggi pada zaman berikutnya sekali lagi, dan proses itu diulangi untuk mengubah keadaan. Untuk menyelesaikan isu ini, kami memerlukan mekanisme untuk menjejaki akses halaman selepas salinan.
Kajian ini mencadangkan memanfaatkan bit kotor dalam entri jadual halaman (PTE). Secara amnya, modenarchitectures mengekalkan pelbagai maklumat dalam PTE untuk setiap halaman, dan bit kotor adalah salah satu medan yang disokong oleh kebanyakan seni bina.
Apabila MMU memproses akses memori tulis, ia secara automatik menetapkan bit kotor halaman yang sepadan. Ini sebaliknya membayangkan bahawa apabila bit kotor untuk halaman ditetapkan, halaman itu telah dikemas kini dengan akses tulis.
Berdasarkan idea ini, kami mengubah suai mekanisme untuk mengira liputan. Pada mulanya, semua wilayah dianggap sebagai wilayah biasa. Semasa fork, liputan untuk wilayah biasa dikira dengan bilangan salinan-atas-tulis menggunakan Persamaan (1).

Semasa mengendalikan kerosakan halaman untuk kawasan berkelokal tinggi, semua halaman di rantau itu disalin dengan bit kotornya dikosongkan. Tambahan pula, rantau ini ditandakan sebagai wilayah prasalinan. Semasa fork, liputan untuk wilayah yang disalin dikira dengan bilangan halaman kotor di bahagian tersebut seperti berikut:
![]()
Liputan yang dikira untuk setiap rantau dibawa melalui garpu dan digunakan sebagai metrik untuk lokaliti spatial rantau tersebut. Apabila kesalahan halaman tulis berlaku di rantau, sistem menyemak liputan rantau itu dan mungkin pra-menyalin halaman untuk kawasan berkelokal tinggi.
Rajah 2 menggambarkan situasi di mana liputan dikira selepas prasalinan. Katakan kedua-dua kawasan disalin (berlorek merah), dan halaman 0, 2, 3, 4 dan 11 semuanya mempunyai set bit kotor.
Untuk mengira liputan semasa memproses garpu, sistem menggunakan bit kotor dan bukannya kiraan salin atas tulis kerana wilayah disalin dalam zaman semasa. Oleh itu, wilayah 0 mempunyai liputan sebanyak 66%.
Manakala liputan wilayah 1 ialah 15%. Untuk mengendalikan kerosakan halaman untuk halaman 3, rantau 0 disalin semula, manakala, kerosakan halaman untuk halaman 9 dikendalikan dengan mekanisme asal. Dengan cara ini, kita boleh memastikan kawasan berkelokal tinggi daripada tergelincir daripada tumpuan.

3.4. Menangkap Lokaliti
Memandangkan pengendali kesalahan halaman terletak pada laluan kritikal prestasi dalam OS, kita harus meminimumkan overhed untuk pelaksanaan skim yang dicadangkan.
Pada asasnya, CCoWrequires mekanisme untuk mengira liputan, dan cara paling mudah untuk melaksanakan ciri ini ialah menjejak halaman yang mencetuskan kerosakan halaman dengan peta bit seperti yang kami terangkan dalam Bahagian 3.2.
Semasa mengendalikan kerosakan halaman, sistem menetapkan bit yang sepadan dengan halaman yang rosak. Semasa fork, sistem mengimbas peta bit untuk mengira bilangan halaman rosak bagi setiap rantau dan mengira liputan. Peta bit ditetapkan semula selepas pengiraan.
Pendekatan ini mudah tetapi mengenakan kekangan ruang dan masa yang tinggi. Sistem harus mengekalkan entri bitmap satu bit untuk setiap halaman 4 KB dan memeriksa keseluruhan peta bit semasa garpu. Memandangkan jejak memori yang besar bagi aplikasi intensif memori, operasi ini akan menanggung overhed yang tinggi semasa garpu, mengimbangi manfaat prestasi CCoW. Kami mengoptimumkan pelaksanaan ini dengan mengeksploitasi ciri-ciri kerosakan halaman.
Jika ralat halaman berlaku dari halaman, halaman tersebut tidak mengalami ralat halaman tambahan sehingga proses mencipta proses baharu. Oleh itu, setiap halaman boleh mencetuskan kerosakan satu halaman paling banyak, dan untuk rantau dengan n halaman, kerosakan halaman hanya boleh berlaku sehingga n kali. Ini menunjukkan bahawa mengira bilangan kerosakan halaman bagi setiap rantau adalah mencukupi untuk mengira liputan, dan bukannya mengekalkan peta bit untuk halaman individu.
Oleh itu, kami menggantikan peta bit dengan pembilang kesalahan. Setiap rantau dikaitkan dengan sepasang pembilang seperti berikut: satu untuk mengira kesalahan halaman pada zaman terakhir, dan satu lagi untuk mengira kesilapan halaman dalam zaman semasa.
Yang pertama digunakan untuk menentukan lokaliti spatial wilayah, manakala yang terakhir digunakan untuk memantau lokaliti spatial zaman semasa. Semasa garpu, pembilang kesalahan semasa disalin ke pembilang kerosakan sebelumnya.
Jika rantau disalin dalam zaman ini, maka bilangan halaman kotor di rantau itu akan ditulis ke kaunter kesalahan sebelumnya. Kaunter diisi semasa mencipta kawasan memori maya (VMA) baharu dan dituntut semula apabila VMA yang sepadan dikecutkan atau tidak dipetakan. Pengoptimuman ini mengurangkan overhed ruang CCoW daripada satu bit setiap halaman kepada beberapa bait setiap rantau.

For more information:1950477648nn@gmail.com






