2 thread or ! 2 thread

2 thread or ! 2 thread

There have been plenty of driver developers out there who upon looking at the CPU loads note that one CPU is fully loaded, and the others are mostly idle. RELAX, this is OK. There is no need to go to extreme lenghts to call thread_create or ddi_taskq_create, the system is working as designed.

The Solaris network stack has been optimized to take as much advantage as possible of data locality on a CPU. It costs time and resources to migrate data from one CPU to another. The network stack is trying real hard to keep relevant data in caches and have reasonable locality to the interface the data is coming from or going to. So by migrating this data to another thread, the driver developer makes it more difficult for the stack to optimize the data, and the result is higher latencies, and/or lower performance. And it always means more total cpu utilization.


So relax, have a homebrew (maybe a cold american pilsner - you choose the brand), and let the framework do it's job. Besides, while one CPU is happily pushing data on the wire, the other CPU's can be used to compile OpenSolaris and really get yourself off to a good start.


Technorati Tag:
Technorati Tag:
Comments:

Post a Comment:
  • HTML Syntax: NOT allowed
About

randyf

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today