Kekangan Peruntukan Memori dalam Numpy untuk Tatasusunan Besar
Menghadapi ralat semasa cuba memperuntukkan tatasusunan numpy yang besar pada Ubuntu 18, "Tidak dapat memperuntukkan tatasusunan dengan bentuk dan jenis data," isu ini tidak ditemui pada MacOS. Sebab di sebalik perbezaan ini terletak pada mod pengendalian overcommit sistem.
Pengendalian Terlalu Komit dan Peruntukan Memori
Mod pengendalian overcommit menentukan cara sistem mengurus permintaan peruntukan memori. Dalam mod lalai (0), kernel menyemak sama ada terdapat memori fizikal yang mencukupi untuk melakukan permintaan peruntukan. Jika tidak, ia menolak peruntukan. Dalam mod overcommit 1, kernel sentiasa membenarkan peruntukan, tanpa mengira memori fizikal yang tersedia.
Resolution
Untuk menyelesaikan isu ini pada Ubuntu, anda perlu mendayakan mod overcommit 1. Sebagai root, jalankan arahan berikut:
$ echo 1 > /proc/sys/vm/overcommit_memory
Ini akan menukar mod pengendalian overcommit kepada 1, membenarkan peruntukan tatasusunan numpy yang besar.
Tasusunan Jarang dan Memori Maya
Mod overcommit 1 boleh berguna untuk tatasusunan jarang, di mana hanya sebahagian kecil daripada memori yang diperuntukkan sebenarnya digunakan. Ini kerana sistem hanya menyerahkan memori fizikal pada halaman yang ditulis secara eksplisit, dengan itu mengekalkan ingatan fizikal.
Amaran
Adalah penting untuk ambil perhatian bahawa semasa mod overcommit 1 membenarkan peruntukan yang besar, ia boleh membawa kepada ketidakstabilan sistem yang berpotensi jika memori yang diperuntukkan melebihi memori fizikal yang tersedia. Gunakan mod overcommit 1 dengan berhati-hati dan pantau penggunaan memori sistem anda dengan teliti.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Memperuntukkan Tatasusunan NumPy Besar pada Ubuntu, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!