我們有幾個Java應用程序在同一臺Linux機器上運行,並通過TCP來回發送消息。我們使用ServerSocket和Socket來創建連接。我想盡可能地減少這種通信的延遲。似乎有可能在我們的盒子上分配一個核心來執行連續的TCP輪詢,這將改善性能。這是如何在Linux和/或Java中完成的?爲TCP輪詢分配內核
0
A
回答
0
不是。沒有辦法將線程分配給Java中的核心。
並且分配單個內核不會提高性能;相反,它可能會減少它。我不清楚'polling'是什麼意思,但你不能用套接字來做:你必須在read()中使用單獨的線程阻塞。如果您正在考慮使用InputStream.available()
,則您正在完全吠叫錯誤的樹,應該使用NIO和Selector。
0
有一種方法可以實現這一點,但它不是可移植的。
你需要做的是: 1)找出本地線程ID 2)設置親和力的本地線程
你可以得到本地線程ID(這在Linux上是一個進程ID)使用不支持來自sun.jvm.hotspot下的軟件包的類。您可以通過將sa-jdi.jar(與jdk捆綁在一起)構建路徑來鏈接這些類。由於我不喜歡從其他站點複製答案的想法,因此您應該閱讀github
中的說明一旦獲得本機線程ID,應該使用'taskset'命令行實用程序更改親和力。您可以在這裏找到的how to use taskset其他的帖子
相關問題
- 1. 將Jenkins配置爲每分鐘輪詢
- 2. C#輪詢TCP服務器
- 3. Android連續tcp輪詢
- 4. TCP內核實現
- 5. CUDA內核內部的內存分配
- 6. 進程從內核分配內存塊
- 7. C中的輪詢TCP連接
- 8. 每小時輪詢TCP服務器ios
- 9. 在UWP背景下輪詢TCP/IP
- 10. 使用輪詢的TCP超時
- 11. Pyserial輪詢內存
- 12. 從內核線程爲用戶空間分配內存
- 13. 使用vmalloc爲內核模塊分配大量內存
- 14. 如何爲回調輪詢配置dojox.cometd?
- 15. 爲內部應用程序使用分配TCP/IP端口
- 16. 爲linux內核配置物理內存
- 17. 配置內核
- 18. 在內核空間的動態分配
- 19. 在Linux內核中分配兩個值
- 20. 使用threadIdx在內核中分配值
- 21. 核心數據內存分配
- 22. 將cpu內核分配給進程 - Linux
- 23. 核心文本內存分配問題
- 24. 什麼是內核部分不匹配?
- 25. 在linux內核中選擇內存分配api頻繁地分配大內存
- 26. 動態分配設置爲true時手動分配內核數量
- 27. 其中是tcp_delack_min linux tcp內核參數?
- 28. C - Linux - 內核模塊 - TCP標頭
- 29. Linux內核TCP套接字修改
- 30. linux內核TCP重傳定時器