CCoW: Mengoptimalkan Copy-on-Write Mengingat Lokalitas Spasial di Beban Kerja Bagian 1
Apr 02, 2024
Abstrak:
Copy-on-write (CoW) adalah teknik manajemen memori penting yang memungkinkan berbagi halaman antar proses secara efisien. Secara khusus, dengan menggabungkan Kontrak Karya dengan panggilan sistem fork, aplikasi, bahkan dengan jejak memori yang besar, dapat mengambil cuplikan data dalam memori saat ini dengan overhead yang rendah.
Data memori mengacu pada data yang disimpan dalam memori komputer. Meski berbeda dengan ingatan manusia, namun ada hubungan tertentu di antara keduanya.
Pertama, data memori dapat mendorong perkembangan memori manusia. Misalnya, kita dapat menggunakan fungsi pencatatan, penyimpanan, dan pengambilan di komputer untuk membantu kita mempelajari, mengingat, dan memahami pengetahuan. Teknologi modern memberi kita cara yang lebih efisien untuk mengingat dan belajar, yang memastikan bahwa kita dapat menguasai pengetahuan dan keterampilan dengan lebih baik.
Kedua, data memori juga dapat membantu orang mengelola ingatannya dengan lebih baik. Dengan mengatur dan mengklasifikasikan data secara rapi, kita dapat menemukan dan mengingat kembali informasi yang kita perlukan dengan lebih cepat, yang sangat penting bagi kehidupan, pekerjaan, dan studi kita.
Yang terpenting, data dalam memori mencegah hilangnya memori manusia. Ingatan manusia berangsur-angsur melemah seiring berjalannya waktu, sebuah proses yang disebut “lupa”. Namun, dengan menyimpan data di hard drive komputer, kita dapat memastikan bahwa informasi dan kenangan yang kita perlukan dapat disimpan dan diambil kapan saja.
Oleh karena itu, hubungan antara data memori dengan memori manusia dapat dikatakan positif. Meskipun kita tidak boleh terlalu bergantung pada teknologi, penggunaan data memori secara wajar dapat meningkatkan efisiensi kerja dan hasil belajar kita, membantu kita mengelola memori dengan lebih baik, dan mencegah lupa. Terlihat bahwa kita perlu meningkatkan daya ingat, dan Cistanche deserticola dapat meningkatkan daya ingat secara signifikan karena Cistanche deserticola merupakan bahan obat tradisional Tiongkok yang memiliki banyak khasiat unik, salah satunya meningkatkan daya ingat. Khasiat Cistanche deserticola berasal dari berbagai bahan aktif yang dikandungnya, antara lain asam tanat, polisakarida, glikosida flavonoid, dll. Bahan-bahan tersebut dapat meningkatkan kesehatan otak melalui berbagai jalur.

Klik tahu 10 cara meningkatkan daya ingat
Namun, karena Kontrak Karya terjadi per halaman dalam penanganan kesalahan halaman, setiap kali kesalahan halaman terjadi, sistem operasi harus ikut terlibat. Hal ini menyebabkan penurunan kinerja yang signifikan untuk beban kerja intensif penulisan.
Makalah ini mengusulkan copyon-write (CCoW) berbasis cakupan, sebuah skema Kontrak Karya yang dioptimalkan dengan mempertimbangkan lokalitas dalam akses memori untuk mengurangi masalah Kontrak Karya. CCoW mengukur lokalitas spasial dalam ruang alamat proses dengan konsep cakupan.
Saat memproses Kontrak Karya, CCoW menyalin beberapa halaman terlebih dahulu untuk wilayah memori lokalitas tinggi, sehingga meminimalkan keterlibatan OS untuk beban kerja intensif penulisan. Kami menjelaskan tantangan untuk mengukur lokalitas dan memberikan optimalisasi untuk mengimplementasikan konsep tersebut.
Evaluasi dengan prototipe menunjukkan bahwa pendekatan ini dapat meningkatkan kinerja aplikasi secara keseluruhan hingga 10% dengan sedikit overhead memori.
Kata Kunci: copy-on-write; sistem memori virtual; garpu; ulang; kesalahan halaman.
1. Perkenalan
Peran utama sistem operasi (OS) adalah mengelola sumber daya sistem yang berharga, dan copy-on-write (CoW) adalah salah satu teknik manajemen memori paling mendasar yang diadopsi oleh sebagian besar sistem operasi kontemporer.
Ketika dua atau lebih proses perlu memiliki data yang sama, skema Kontrak Karya memungkinkan proses untuk berbagi halaman yang sama daripada langsung menduplikasi halaman tersebut. Halaman yang dibagikan diduplikasi sesuai permintaan, hanya ketika salah satu proses menulis ke halaman yang dibagikan.
Sistem memori virtual dapat secara efektif menyediakan pembagian data antar proses, dan berbagai fitur memori virtual, seperti menduplikasi ruang alamat selama proses fork, menghapus duplikasi halaman yang sama, dan berbagi halaman nol, diimplementasikan berdasarkan copy-on-write [1–3]. Karena fitur ini, aplikasi dapat membuat salinan dirinya sendiri dengan spaceoverhead yang rendah, dan menggunakan kloning tersebut dengan tepat.
Misalnya, Redis, salah satu sistem penyimpanan nilai kunci dalam memori yang populer [4], menggunakan copy-on-write bersama dengan sistem fork untuk memanggil data dalam memori yang tersimpan ke penyimpanan. Saat melayani permintaan masuk, proses utama Redis secara berkala memunculkan proses anak dengan fork. Proses anak dimulai dengan snapshot memori yang identik dengan proses utama untuk menyimpan data dalam memori di penyimpanan.

Karena snapshot diisolasi dari ruang alamat proses utama namun dikelola oleh copy-on-write, proses utama dan proses anak tidak memerlukan mekanisme rumit untuk menjaga konsistensi antara data saat ini dan snapshot.
Dengan demikian, kita dapat menganggap bahwa copy-on-write sangat penting dalam sistem memori virtual. Namun, copy-on-write saat ini bermasalah dalam aplikasi intensif memori dengan beban kerja intensif tulis. Secara khusus, duplikasi data biasanya terjadi pada pagefault handler di OS. Karena duplikasi data diproses per halaman, dengan beberapa kali penulisan, proses tersebut dapat menimbulkan banyak kesalahan halaman.
OS terlibat dalam setiap kesalahan halaman, yang mengakibatkan seringnya peralihan mode kernel pengguna. Mengingat jejak memori yang besar dari aplikasi intensif memori, jumlah peralihan mode juga banyak.
Selain itu, tabel halaman dimodifikasi selama duplikasi, yang menyebabkan terjemahan look-aside buffer (TLB) menembak jatuh semua inti dalam sistem. Semua ini menimbulkan biaya overhead yang tidak dapat diabaikan dan menurunkan kinerja aplikasi.
Makalah ini mengusulkan copy-on-write (CCoW) berbasis cakupan, sebuah skema optimasi copy-on-write yang baru. Ketika sebuah halaman diakses untuk menulis, halaman-halaman terdekatnya juga kemungkinan akan segera diakses untuk menulis karena lokalitas spasial dalam akses memori. CCoW mengeksploitasi lokalitas spasial untuk mengurangi jumlah kesalahan halaman untuk copy-on-write. Secara khusus, CCoW memproses copy-on-write dalam granularitas besar (disebut wilayah).
Dengan menyalin beberapa halaman dalam penanganan kesalahan halaman, CCoW dapat mengurangi sejumlah besar kesalahan halaman untuk copy-on-write dan overhead yang menyertainya. Namun, tingkat lokalitas spasial sangat bervariasi tergantung pada lokasi dalam ruang alamat proses, dan menduplikasi bagian memori dengan lokalitas rendah hanya menimbulkan overhead dalam hal waktu dan ruang.
Untuk mengatasi kekurangan ini, kami mengusulkan mekanisme overhead rendah yang tepat untuk menilai lokalitas spasial dalam ruang alamat proses. CCoW menghitung jumlah copy-on-write dan write di setiap wilayah.
Dengan membawa informasi lokalitas melalui fork, kami dapat memperkirakan tingkat lokalitas spasial, dan CCoW secara efektif melakukan pra-penyalinan hanya untuk wilayah dengan lokalitas tinggi. Kami menerapkan skema CCoW yang diusulkan di kernel Linux.
Ketika terintegrasi ke dalam sistem memori virtual sistem operasi, aplikasi dapat memperoleh manfaat dari CCoW tanpa modifikasi. Kami menganalisis karakteristik kinerja dengan microbenchmark, dan evaluasi menggunakan benchmark dengan beban kerja realistis menunjukkan bahwa CCoW dapat meningkatkan kinerja aplikasi hingga 10% dengan jumlah overhead memori yang wajar.

Sisa makalah ini disusun sebagai berikut. Di Bagian 2, kami meninjau latar belakang dan pekerjaan terkait makalah ini, termasuk memori virtual dan fork. Detail rancangan PKP2B dan pelaksanaannya kami jelaskan pada Bagian 3. Bagian 4 memaparkan hasil evaluasi PKP2B. Akhirnya, kami menyimpulkan makalah ini di Bagian 5.
2. Latar Belakang dan Pekerjaan Terkait
2.1. Paging dan Memori Virtual
Hampir semua komputer dan sistem operasi modern mengadopsi paging dan memori virtual sebagai skema manajemen memori utama mereka [5]. Memori utama dibagi menjadi halaman berukuran sama, dan OS mengalokasikan atau membatalkan alokasi memori dari proses pengguna di unit halaman.
OS juga memelihara pemetaan ruang alamat proses ke lokasi fisik pada sistem. Setiap halaman logis dalam ruang alamat proses dipetakan ke lokasi fisiknya, dan pemetaan ini disimpan dalam bentuk tabel halaman.
Untuk menangani referensi memori suatu proses, unit manajemen memori (MMU), sebuah komponen perangkat keras dalam prosesor, menerjemahkan alamat yang diminta ke alamat fisiknya dengan mengacu pada tabel halaman. Tabel halaman terdiri dari entri tabel halaman (PTE). Setiap PTE berisi informasi pemetaan dan mungkin memiliki kolom tambahan untuk menjelaskan status halaman dan pemetaan terkait.
Ukuran halaman, meskipun spesifik arsitektur, biasanya 4 KB di sebagian besar arsitektur. Hal ini berarti bahwa setiap 4 KB dalam ruang alamat proses harus memiliki satu PTE. Mengingat besarnya ukuran ruang alamat proses, ukuran tabel halaman, bahkan untuk satu proses pun, bisa sangat besar.
Misalnya, tabel halaman untuk proses dalam arsitektur 64-bit dengan halaman 4 KB dan 8-byte PTE akan berukuran 32 PB (264/212 × 8=255 byte). Namun, ruang alamat biasanya berpenduduk jarang, dan sebagian besar ruang alamat tidak diperlukan.
Ini memperjelas organisasi hierarki tabel halaman. Keseluruhan tabel halaman dibagi menjadi potongan-potongan tabel halaman yang sesuai pada satu halaman. Potongan tabel halaman tidak dialokasikan ke wilayah alamat yang tidak dialokasikan.

Potongan tabel halaman yang terisi dapat diringkas sebagai potongan tabel halaman tingkat yang lebih tinggi. Tipuan ini diulangi sampai hanya ada potongan-potongan pada satu halaman, sehingga memungkinkan bentuk tabel halaman yang kompak.
For more information:1950477648nn@gmail.com






