Kami menjalankan proses waktu-nyata pada kernel non-waktu-nyata (CentOS 6), dan ini mungkin tidak akan berubah.
Kami memiliki aplikasi video streaming yang membutuhkan sekitar 500 MB / s lalu lintas PCIe dari FPGA khusus secara terus menerus selama 1,5 jam setiap kalinya. Aplikasi berfungsi dengan baik - sebagian besar waktu. Namun, kami mengalami situasi di mana tampaknya kernel berhenti merespons untuk melayani permintaan PCIe atau memori hingga 500 milidetik sekaligus. Ini tampaknya terjadi selama file burst IO dari utas lainnya. Saya merasa tidak mungkin untuk mencoba mereplikasi masalah ini dengan hanya melakukan banyak file dummy IO dari ruang pengguna saat aplikasi utama sedang berjalan.
Apakah ada cara untuk memaksa (mensimulasikan) "pembekuan" global dari kernel Linux (khususnya, menghentikan PCIe atau semua akses memori DDR3 atau sesuatu seperti itu) sehingga kita dapat mereproduksi masalah ini?
Kami memiliki buffering hingga 10 milidetik diimplementasikan sekarang ke dalam memori FPGA internal, tetapi itu tidak cukup. Kita dapat buffer ke FPGA DDR3 dan kemudian membuang ke host, tetapi kita perlu metode untuk menguji fitur baru ini di bawah tekanan.
Kami tidak ingin kernel membeku atau mengunci secara permanen. Kami ingin kemampuan untuk mengatur interval waktu.
Saya mencari sesuatu di sepanjang baris penulisan nilai-nilai ajaib untuk /proc/sys/vm
sementara yang membuat sistem hampir merangkak, dan kemudian kembali kembali setelah beberapa ratus milidetik, tetapi melihat sejumlah cara yang mungkin untuk memecahkannya bukan untuk pemula seperti saya ( https://www.kernel.org/doc/Documentation/sysctl/vm.txt ). Mungkin numactl
sihir?