CCoW: Mengoptimalkan Copy-on-Write Mengingat Lokalitas Spasial di Beban Kerja Bagian 2

Apr 02, 2024

Ukuran halaman yang kecil dapat menjadi masalah karena sistem mampu menangani memori fisik dalam jumlah besar. Dengan organisasi tabel halaman hierarki, setiap terjemahan alamat virtual memerlukan beberapa akses memori, satu untuk setiap tingkat tabel halaman, yang tidak dapat diterima.

Seiring bertambahnya usia, daya ingat secara bertahap menurun. Namun memori fisik bukanlah salah satu faktor yang secara langsung mempengaruhi memori kita. Memori berkaitan dengan kekuatan koneksi antar neuron di otak, kesehatan otak, dan seberapa sering memori digunakan.

Di otak kita, neuron dihubungkan melalui sinapsis. Sinapsis ini mendorong kita untuk menyimpan dan mengambil informasi. Namun, seiring bertambahnya usia, koneksi sinaptik ini menurun, menyebabkan daya ingat kita menurun. Hal ini bukan karena daya ingat fisik kita berkurang, melainkan karena otak kita sedang mengalami perubahan tertentu yang memengaruhi kemampuan kita.

Namun, menggunakan otak kita dapat membantu kita mempertahankan ingatan yang baik. Otak membutuhkan olahraga, sama seperti tubuh, otak membutuhkan waktu luang dan olahraga agar tetap sehat. Mengembangkan kebiasaan berpikir yang baik akan membantu kesehatan dan efisiensi otak Anda. Misalnya, mempelajari hal-hal baru, menggunakan teknik memori, memainkan teka-teki logika, dan lain-lain, semuanya dapat meningkatkan kualitas dan efisiensi otak Anda.

Oleh karena itu, memori fisik hanyalah kapasitas penyimpanan yang tersedia di otak. Ingatan kita terkait erat dengan batas kemampuan otak kita. Dengan terus-menerus melatih otak kita, kita dapat membuat daya ingat kita lebih tahan lama dan mempertahankannya pada tingkat yang tinggi. Untuk meningkatkan daya ingat, kita harus fokus melatih otak dengan tetap menjaga sikap positif dan kebiasaan kesehatan yang baik. Terlihat bahwa kita perlu meningkatkan daya ingat, dan Cistanche deserticola dapat meningkatkan daya ingat secara signifikan, karena Cistanche deserticola memiliki efek antioksidan, anti inflamasi, dan anti penuaan, yang dapat membantu mengurangi reaksi oksidasi dan inflamasi di otak, sehingga melindungi otak. kesehatan sistem saraf. Selain itu, Cistanche deserticola juga dapat mendorong pertumbuhan dan perbaikan sel saraf, sehingga meningkatkan konektivitas dan fungsi jaringan saraf. Efek ini dapat membantu meningkatkan daya ingat, belajar, dan kecepatan berpikir, serta mencegah perkembangan disfungsi kognitif dan penyakit neurodegeneratif.

increase brain power

Klik tahu cara meningkatkan fungsi otak

Untuk mengurangi overhead yang tinggi dari terjemahan alamat virtual ke fisik, banyak arsitektur modern menyertakan cache untuk terjemahan alamat. MMU menyimpan beberapa hasil terjemahan terkini dalam logika perangkat keras yang disebut buffering sisi terjemahan, juga dikenal sebagai TLB.

Biasanya, TLB arsitektur modern dapat menampung sekitar 500 hingga 2000 entri [6,7]. Entri diindeks oleh perangkat keras sehingga inti prosesor dapat mencari terjemahannya dengan sangat cepat. Dengan memanfaatkan lokalitas referensi memori, banyak terjemahan alamat dapat dilakukan tanpa menelusuri tabel halaman (disebut sebagai hit TLB).

Seiring dengan bertambahnya jejak memori untuk aplikasi intensif memori, jumlah pemetaan halaman virtual ke fisik untuk suatu proses juga meningkat. Namun, karena keterbatasan perangkat keras, jumlah entri TLB tidak dapat mengimbangi pertumbuhan pesat jejak memori aplikasi. Dengan demikian, tingkat kehilangan TLB meningkat, menyebabkan kemacetan dalam kinerja aplikasi yang membutuhkan banyak memori [8-11].

Untuk mengatasi keterbatasan ini, beberapa arsitektur mendukung ukuran halaman tambahan yang lebih besar dari ukuran halaman dasar 4 KB. Misalnya, arsitektur Intel modern mendukung ukuran halaman 2 MB dan 1 GB [7]. Dengan ukuran halaman sebesar itu, satu terjemahan alamat dapat mencakup rentang alamat yang lebih luas, sehingga secara efektif meningkatkan cakupan yang dapat disediakan oleh TLB dengan jumlah entri yang sama.

Misalnya, sistem dengan 1024 entri TLB dan ukuran halaman dasar 4 KB dapat memberikan cakupan TLB sebesar 4 MB, sedangkan jumlah entri yang sama dengan halaman besar 1 GB memberikan cakupan 1 TB. Linux memanfaatkan halaman besar dalam bentuk halaman besar transparan (THP). Seperti namanya, Linux secara implisit menyediakan proses pengguna dengan halaman besar bila memungkinkan.

JikaTHP tidak diaktifkan, Linux mengalokasikan memori untuk proses di unit halaman dasar 4 KB. JikaTHP diaktifkan, Linux mencoba mengalokasikan halaman besar (berukuran 2 MB) alih-alih halaman dasar, sehingga memungkinkan pemetaan halaman secara kasar. Perincian yang besar ini memungkinkan berbagi halaman secara efisien antara proses induk dan anak melalui fork. Jika alokasi halaman yang besar tidak memungkinkan saat ini, Linux kembali ke alokasi halaman dasar. Linux secara berkala memindai ruang alamat proses untuk menemukan halaman dasar dan menggabungkannya menjadi halaman besar.

improve your memory

Ada penelitian yang mencoba untuk mempromosikan halaman besar untuk kinerja sambil menutupi kekurangannya lebih lanjut. Ingens [12,13] mengusulkan untuk menyiapkan halaman besar secara asinkron di luar jalur kritis.

Hawkeye [14] menyajikan skema promosi halaman besar yang terperinci berdasarkan pola akses memori untuk memaksimalkan kinerja dengan jumlah promosi halaman besar yang minimal. Zhu dkk. [15] menggeneralisasi proses penggunaan halaman besar dan mengoptimalkan siklus hidup halaman besar. Bagian dkk. [16] memungkinkan lubang di halaman besar, memberikan fleksibilitas dalam manajemen memori dengan halaman besar.

Namun, halaman besar itu adalah pedang bermata dua. Karena bertambahnya ukuran unit manajemen, alokasi halaman mengalami fragmentasi internal. Jika rentang alamat yang dialokasikan lebih kecil dari ukuran halaman yang besar, sisa halaman tidak dapat digunakan dan terbuang sia-sia. Apa yang disebut dengan pembengkakan memori ini dapat secara signifikan mengurangi penggunaan memori pada sistem dengan halaman yang besar [12-17].

Peningkatan ukuran halaman juga dapat berdampak negatif terhadap kinerja program. OS modern mengadopsi skema copy-on-write secara ekstensif untuk pembagian memori yang efisien antar proses. Namun Kontrak Karya hanya diproses pada halaman dasar.

Jadi, untuk menangani Kontrak Karya pada halaman yang besar, halaman besar tersebut dipecah menjadi halaman dasar, dan hanya halaman yang rusak yang disalin. Memecah halaman yang besar memerlukan banyak waktu, mengakibatkan penanganan kesalahan halaman yang panjang dan terputus-putus. Dalam hal ini, beberapa aplikasi, bahkan aplikasi yang membutuhkan banyak memori, tidak menyarankan penggunaan halaman besar untuk kinerja dan penggunaan memori yang stabil [4,18].

Secara umum, terdapat rentang ruang alamat dalam ruang alamat proses dimana semua halaman dalam rentang tersebut memiliki izin dan karakteristik yang sama. Untuk manajemen, OS modern biasanya mengadopsi konsep 'area memori virtual (VMA)' untuk mewakili rentang ruang alamat tersebut. Kita dapat mengklasifikasikan halaman-halaman dalam ruang alamat proses menurut asalnya.

improving brain function

Beberapa halaman dapat dimuat dari file cadangan di penyimpanan sekunder, yang disebut sebagai 'halaman yang didukung file'. Padahal, beberapa halaman diisi secara dinamis tanpa data pendukung apa pun. Halaman untuk tumpukan dan heap dalam hal ini disebut 'halaman anonim'.

2.2. Fork dan Copy-on-Write

Fork adalah salah satu panggilan sistem standar POSIX untuk membuat proses baru. Ketika suatu proses memanggil panggilan sistem fork, sebuah proses baru dibuat sebagai anak dari proses pemanggilan tersebut.

Di bawah tenda, OS menciptakan proses anak dengan menduplikasi seluruh ruang alamat dari proses pemanggilan. Artinya proses anak harus dimulai dengan data yang sama dengan proses induk.

Untuk menangani duplikasi ruang alamat secara efisien, sebagian besar OS modern menggunakan teknik copy-on-write (CoW). Untuk menduplikasi ruang alamat induk, OS tidak menyalin setiap halaman. Sebaliknya, tabel halaman dari proses anak dibuat dengan menyalin tabel halaman dari proses induk.

Ini secara efektif membuat pemetaan bersama ke ruang alamat induk. Saat membuat pemetaan bersama, izin menulis untuk setiap halaman dihilangkan dengan menghapus bit izin di PTE terkait.

Setelah menyalin pemetaan, orang tua dan anak dapat membaca halaman yang dibagikan sebagai halaman mereka. Ketika salah satu proses membuat akses tulis ke suatu halaman, MMU, karena kurangnya izin menulis, memicu kesalahan halaman. Dalam penanganan kesalahan halaman, OS mengalokasikan halaman baru, menyalin halaman asli, dan memperbarui pemetaan halaman terkait dari proses penyebab kesalahan dengan izin tertulis.

Pada titik ini, orang tua dan anak dapat memiliki data yang berbeda pada alamat virtual yang sama. Mekanisme copy-on-write ini banyak digunakan sebagai mekanisme kunci mendasar untuk mewujudkan banyak fitur memori virtual. Secara khusus, pembacaan heapregion yang tidak diinisialisasi biasanya ditangani dengan pemetaan bersama ke halaman nol, yang merupakan halaman khusus yang berisi semua angka nol.

Penggabungan halaman yang sama kernel (KSM) adalah teknik menghapus duplikat halaman yang sama dalam sistem. OS memindai halaman dalam sistem untuk mengidentifikasi halaman dengan data yang identik. Ketika halaman tersebut ditemukan, OS mengambil kembali semua kecuali satu halaman dan memperbarui tabel halaman terkait untuk berbagi halaman yang tersisa.

Dalam pemrosesan, izin menulis dihilangkan sehingga akses tulis selanjutnya ke halaman tersebut diidentifikasi dan disalin. Dengan efisiensi copy-on-write yang tinggi, pembuatan proses menjadi efisien, dan beberapa aplikasi intensif data memanfaatkan keunggulan ini untuk membuat salinan data .

Redis, salah satu layanan penyimpanan nilai kunci dalam memori yang populer [4], adalah salah satu contohnya [19]. Redisis dirancang terutama untuk menyimpan data dalam memori guna memberikan throughput tinggi dan latensi rendah.

Namun, beberapa aplikasi menuntut kegigihan data yang disimpan, dan melengkapi kembali desain dalam memori dengan fork. Redis menerapkan permintaan masuk ke indeks dalam memori dan struktur data saja dan secara berkala memanggil panggilan sistem fork. Hal ini secara efektif menciptakan proses anak dengan konten memori duplikat dari proses Redis asli, dan proses pemanggilan (yaitu, proses asli) terus memproses permintaan masuk.

Proses anak mengalihkan eksekusinya; menggunakan konten memori saat ini sebagai snapshot, ia membuat serial struktur data dalam memori menjadi file, sehingga memastikan kegigihan snapshot dalam memori. Setelah menghapus snapshot, proses anak berakhir.

Proses asli dapat membuat snapshot lain dengan cara yang sama, dan jika sistem mengalami crash, Redis dapat dipulihkan dengan membaca snapshot terakhir. Meskipun fork merupakan panggilan sistem yang sangat berharga, overhead-nya telah dikritik.

supplements to boost memory

Baumann dkk. [20] menganalisis fork dan menemukan bahwa fork menyebabkan penurunan kinerja dalam aplikasi modern. Misalnya, ketika aplikasi modern menjadi lebih kompleks, OS harus mempertimbangkan sekitar 25 kasus khusus untuk mulai memproses panggilan sistem fork agar sesuai dengan spesifikasi POSIX. Mereka merangkum masalah panggilan sistem fork dan menyarankan fitur-fitur yang harus dimiliki oleh panggilan sistem fork untuk komputer modern.

Mereka juga memberikan cara alternatif untuk mengganti garpu. Zhao dkk. [19] menunjukkan bahwa implementasi fork dalam sistem saat ini tidak efisien karena aplikasi dengan jejak memori yang besar memerlukan waktu yang lama untuk menyiapkan tabel halaman. Sebagai solusinya, mereka menggeneralisasi teknik copy-on-write sehingga tabel halaman disalin pada halaman tulis dan juga halaman biasa.


For more information:1950477648nn@gmail.com

Anda Mungkin Juga Menyukai