C programcılarının bildiği gibi libc, iş parçacığı cpu afinite ayarı (pthread_attr_setaffinity_np()) için taşınabilir olmayan işlevler sağlar. Ancak, gerçekten bilmediğim şey, bu, çekirdek modülünü uygularken nasıl yapılabilir. Bazı gerçek örneklerden bahseden ya da yönlendiren herhangi bir cevap oldukça yararlı olacaktır.bir linux çekirdek modülünde iş parçacığı afinitesini
5
A
cevap
3
kthreads, çekirdek konuları anlamına gelir. Belirtilen cpu'da oluşturmak için, kthread_create_on_cpu()
'u çağırmalısınız. include/linux/kthread.h
'da tanımlanmıştır. İş parçacığı uyku durumunda oluşturulacak, bu yüzden üzerine wake_up_process()
numaralı telefonu aramalısınız. Bu kadar.
this sorusundaki cevabımda kthreads kullanmanın bir örneğini alabilirsiniz.
0
kthread_bind() işlevini kullanabilirsiniz.
İlgili konular
- 1. İş parçacığı tanıtıcısı iş parçacığı tanıtıcısı
- 2. Linux başına iş parçacığı CPU istatistikleri
- 3. Python iş parçacığı modülünde Olay ve Kilit farkı nedir?
- 4. Çekirdek modülünde rasgele sayı üret
- 5. Tanımlama işlemcisi (çekirdek) belirli bir iş parçacığı tarafından kullanılır
- 6. Birden çok yüksek öncelikli iş parçacığı birden çok çekirdek üzerinde çalıştırıldığında Linux çekirdeği yanıt vermiyor
- 7. Bir iş parçacığı veya iş parçacığı için bir DAO DAO?
- 8. Bir "gerçek" iş parçacığı
- 9. iş parçacığı içinde yerel depolama iş parçacığı
- 10. Bir linux çekirdek modülünde bir işlev nasıl tanımlanır ve başka birimde kullanılır?
- 11. iş parçacığı
- 12. Java iş parçacığı kullanıcı alanı veya çekirdek alanında oluşturuldu mu?
- 13. Çekirdek modülünde fiziksel ve mantıksal çekirdek numarası nasıl bulunur?
- 14. Linux Çekirdek kodlama stili
- 15. Linux çekirdeğinde çalışan sunucu. Dinlemeyi bir iş parçacığında mı yapmalıyım?
- 16. Linux Kernel Modülünde Yeni İşlemlerin Dinlenmesi
- 17. Bir iş parçacığı özellikle blok
- 18. başka bir iş parçacığı (Net)
- 19. Bir daemon iş parçacığı yalnızca
- 20. UEFI'da bir iş parçacığı oluşturma
- 21. Bir iş parçacığı oluşturma işlevine
- 22. .NET'te bir iş parçacığı başlatılıyor
- 23. Linux çekirdek modülündeki dosyalar nasıl okunur/yazılır?
- 24. D-Bus iş parçacığı modeli
- 25. CountdownTimer UI iş parçacığı güncelleştiren çalışan iş parçacığı içinde
- 26. İş parçacığı, iki iş parçacığı arasındaki iletişim C#
- 27. Windows iş parçacığı havuzu ve CLR iş parçacığı havuzu
- 28. UI iş parçacığı üzerinde görev sürdürme, arka plan iş parçacığı
- 29. Qt: Arka plan iş parçacığı yenileme UI iş parçacığı
- 30. Django/sqlite3 "OperationalError: iş parçacığı yok" iş parçacığı üzerinde
Daha ayrıntılı olarak açıklayabilir misiniz: Mevcut bir parçanın ilgisini değiştirmek mi yoksa çekirdek modülünüzden belirli bir yakınlıkla yeni bir iş parçacığı mı üretmek istiyorsunuz? Bu şekilde yapmaya ne çalışıyorsunuz? Bu bilgi, uzmanların size cevap vermesine yardımcı olabilir. – Eugene
Gecikmiş cevap için özür dilerim. Yapmak istediğim, her biri farklı çekirdeklerde iki iş parçacığı oluşturmaktır, böylece önbellek tutarlılığı sorunu hakkında bazı ölçümler yapabilirim. Ölçümlerimi hassas hale getirmek için, düzlemsel birleştirme eklemem gerekiyor ama aynı zamanda önleme işlemini de devre dışı bırakmalıyım. Bunu yapmak için, görev için bir linux çekirdek modülüne sahip olmalıyım. Bununla birlikte, böyle bir modül için libc kütüphanesi görünmezdir ve bu nedenle, hangi fonksiyonun LKM'deki bir PROSES'in hiçbiri, THREAD'in afinitesini değiştirdiğini görmek istiyorum. Umarım bu şimdi açıktır ... – user1533288