Subject: Re: 1.03Mpps on e1000

From: [email-masked]
Date: Thu, 09 Dec 2004 17:12:30 +0000

Ray Lehtiniemi wrote:
> On Thu, Dec 09, 2004 at 10:15:01AM +0000, [email-masked] wrote:
> 
>>That is very interesting!
>>I'm guessing it's due to some alignment bug?
>>
>>Can you repeat for 60-68 ?
> 
> certainly.  here are the raw results, and a summary oprofile for
> 60-68.
> 
> looking at the disassembly, it seems that the 'rdtsc' opcode
> at 0x46f3 is causing the problem?

Well that wasn't obvious to me :-)
I did some manipulating with sort/join
and came up with the following percentage changes
Note the % diff col adds to 37%

address  % @ 60b % @ 64b % diff
000046f5 14.6006 22.3856 7.785000 #instruction after rdtsc
00004737 15.0990 20.2242 5.125200 #instruction after rdtsc
0000474b 11.3857 12.9496 1.563900
00004726 1.5419 2.5867 1.044800
000046f7 0.6258 1.1922 0.566400
00004751 4.9377 5.4016 0.463900
000047a1 0.0118 0.4675 0.455700
00004739 1.2614 1.6962 0.434800
000044f7 1.0592 1.4506 0.391400
00004749 0.5467 0.9253 0.378600
0000475d 0.0879 0.1769 0.089000
0000445f 0.3785 0.4599 0.081400
000047c3 0.1003 0.1652 0.064900
000045cf 0.0804 0.1316 0.051200
000047aa 0.0048 0.0194 0.014600
000047bd 5.5e-04 0.0142 0.013650
000047b3 0.0106 0.0200 0.009400
00004598 0.0061 0.0147 0.008600
000045e9 0.0026 0.0103 0.007700
00004640 0.0692 0.0701 0.000900
00004465 0.0014 0.0020 0.000600
0000481b 4.3e-04 7.3e-04 0.000300
0000470e 6.1e-05 2.4e-04 0.000179
0000458d 1.2e-04 2.7e-04 0.000150
00004a47 1.8e-04 3.0e-04 0.000120
00004735 0.0085 0.0086 0.000100
00004745 1.2e-04 2.2e-04 0.000100
000047dd 0.0032 0.0033 0.000100
00004a49 0.0037 0.0038 0.000100
00004663 1.8e-04 2.7e-04 0.000090
0000489a 8.0e-04 8.9e-04 0.000090
00004514 9.2e-04 0.0010 0.000080
00004a61 6.1e-05 1.4e-04 0.000079
000046d4 6.1e-05 1.1e-04 0.000049
00004789 6.1e-05 1.1e-04 0.000049
00004683 1.2e-04 1.6e-04 0.000040
00004a51 1.8e-04 2.2e-04 0.000040
000047cc 9.2e-04 9.5e-04 0.000030
000045ba 6.8e-04 7.0e-04 0.000020
00004a36 6.1e-05 8.1e-05 0.000020
00004620 1.8e-04 1.9e-04 0.000010
0000474f 0.0042 0.0042 0.000000
0000466d 6.1e-05 5.4e-05 -0.000007
00004817 1.2e-04 1.1e-04 -0.000010
0000470c 4.9e-04 4.6e-04 -0.000030
000045eb 6.1e-05 2.7e-05 -0.000034
00004616 6.1e-05 2.7e-05 -0.000034
00004a1e 6.1e-05 2.7e-05 -0.000034
00004652 1.2e-04 8.1e-05 -0.000039
000047ee 1.2e-04 8.1e-05 -0.000039
00004685 1.2e-04 5.4e-05 -0.000066
00004894 3.1e-04 2.4e-04 -0.000070
00004714 6.1e-04 5.2e-04 -0.000090
00004524 1.2e-04 2.7e-05 -0.000093
0000467b 1.2e-04 2.7e-05 -0.000093
000046bb 1.2e-04 2.7e-05 -0.000093
00004446 0.0010 8.9e-04 -0.000110
0000488b 2.5e-04 1.4e-04 -0.000110
00004522 4.3e-04 2.7e-04 -0.000160
00004508 3.1e-04 1.4e-04 -0.000170
00004634 6.1e-04 4.3e-04 -0.000180
00004587 8.0e-04 6.0e-04 -0.000200
000047ae 0.0032 0.0030 -0.000200
00004440 5.5e-04 3.3e-04 -0.000220
00004459 0.0012 9.8e-04 -0.000220
00004506 9.2e-04 6.5e-04 -0.000270
000049ff 0.0021 0.0018 -0.000300
0000451c 0.0013 9.8e-04 -0.000320
000046c7 3.7e-04 2.7e-05 -0.000343
00004673 4.9e-04 1.1e-04 -0.000380
0000478f 4.9e-04 1.1e-04 -0.000380
00004450 0.0012 8.1e-04 -0.000390
00004541 6.1e-04 2.2e-04 -0.000390
000045a9 7.4e-04 3.5e-04 -0.000390
00004777 5.5e-04 1.6e-04 -0.000390
000047d0 6.8e-04 2.7e-04 -0.000410
00004457 0.0084 0.0079 -0.000500
000047ba 0.0018 0.0013 -0.000500
00004a6b 0.0031 0.0026 -0.000500
00004612 5.5e-04 2.7e-05 -0.000523
00004681 6.8e-04 1.4e-04 -0.000540
0000477b 7.4e-04 1.9e-04 -0.000550
00004503 0.0017 0.0011 -0.000600
000047df 0.0020 0.0014 -0.000600
000045b6 0.0010 3.8e-04 -0.000620
00004781 0.0010 3.8e-04 -0.000620
00004667 0.0012 5.2e-04 -0.000680
00004885 0.0015 8.1e-04 -0.000690
000045a3 0.0017 0.0010 -0.000700
000047da 0.0014 7.0e-04 -0.000700
00004747 8.6e-04 8.1e-05 -0.000779
0000446f 0.0151 0.0143 -0.000800
00004702 0.0019 0.0011 -0.000800
00004718 0.0157 0.0149 -0.000800
000047b6 0.0022 0.0014 -0.000800
00004a25 0.0054 0.0046 -0.000800
00004a65 0.0026 0.0018 -0.000800
0000477e 9.8e-04 1.4e-04 -0.000840
000045c8 0.0015 5.7e-04 -0.000930
00004543 0.0049 0.0039 -0.001000
00004604 0.0013 3.0e-04 -0.001000
00004787 0.0026 0.0016 -0.001000
00004a02 0.0018 7.6e-04 -0.001040
0000450e 0.0063 0.0052 -0.001100
0000465d 0.0022 0.0011 -0.001100
0000459d 0.0014 1.9e-04 -0.001210
0000464a 0.0017 3.8e-04 -0.001320
000047cf 0.0020 6.8e-04 -0.001320
00004a13 0.0016 1.1e-04 -0.001490
0000461e 0.0017 1.6e-04 -0.001540
000044ff 0.0040 0.0024 -0.001600
00004628 0.0020 3.5e-04 -0.001650
000045d5 0.0076 0.0055 -0.002100
00004638 0.0049 0.0027 -0.002200
00004650 0.0045 0.0021 -0.002400
00004632 0.0052 0.0026 -0.002600
00004769 0.0059 0.0033 -0.002600
00004444 0.0957 0.0930 -0.002700
00004610 0.0034 6.5e-04 -0.002750
000046fb 0.0097 0.0069 -0.002800
0000487f 0.0175 0.0146 -0.002900
000044f4 0.0071 0.0039 -0.003200
00004757 0.0068 0.0032 -0.003600
00004583 0.0176 0.0136 -0.004000
0000472d 0.0178 0.0138 -0.004000
00004624 0.0049 6.5e-04 -0.004250
00004700 0.0074 0.0029 -0.004500
00004763 0.0110 0.0059 -0.005100
00004755 0.0091 0.0037 -0.005400
000047b0 0.0201 0.0138 -0.006300
0000459b 0.0102 0.0035 -0.006700
000046fd 0.0146 0.0078 -0.006800
00004797 0.0253 0.0181 -0.007200
0000473f 0.0226 0.0153 -0.007300
0000476d 0.0253 0.0180 -0.007300
0000474d 0.0236 0.0152 -0.008400
000044f0 0.0191 0.0094 -0.009700
00004471 0.0332 0.0222 -0.011000
000046f3 0.0224 0.0112 -0.011200
0000472f 0.0221 0.0105 -0.011600
00004743 0.0146 0.0025 -0.012100
00004753 0.0311 0.0185 -0.012600
000044f9 0.0232 0.0100 -0.013200
000045f2 0.0781 0.0638 -0.014300
000045c0 0.0796 0.0632 -0.016400
000047a4 0.1020 0.0851 -0.016900
00004455 0.0468 0.0282 -0.018600
0000472a 0.0331 0.0140 -0.019100
00004720 0.0420 0.0228 -0.019200
00004741 0.0520 0.0255 -0.026500
0000460a 0.0296 6.8e-04 -0.028920
00004469 0.0696 0.0391 -0.030500
000047b8 0.0485 0.0164 -0.032100
00004771 0.0479 0.0151 -0.032800
000047d6 0.0634 0.0270 -0.036400
000045c2 0.1763 0.0500 -0.126300
0000488e 0.2228 0.0961 -0.126700
0000458f 0.2212 0.0932 -0.128000
00004709 0.8817 0.7529 -0.128800
0000479b 0.2469 0.1158 -0.131100
000047c6 0.2489 0.1103 -0.138600
00004775 0.2514 0.1124 -0.139000
00004657 0.2502 0.1105 -0.139700
0000444c 0.2555 0.1107 -0.144800
000045df 0.1822 0.0357 -0.146500
00004608 0.2596 0.1117 -0.147900
00004618 0.2635 0.1153 -0.148200
00004679 0.2580 0.1094 -0.148600
0000462c 0.2630 0.1134 -0.149600
00004594 0.2494 0.0958 -0.153600
000045f8 0.1934 0.0369 -0.156500
0000471a 0.8706 0.6718 -0.198800
000045e6 0.4986 0.2189 -0.279700
00004644 0.4393 0.1515 -0.287800
0000463c 0.5214 0.2247 -0.296700
000045fe 0.5160 0.2022 -0.313800
00004622 3.5942 1.5668 -2.027400
0000461c 3.6298 1.5695 -2.060300
00004716 19.2425 16.4027 -2.839800
00004600 5.2128 2.2837 -2.929100
000045b0 7.8500 3.3027 -4.547300

> 
> 
> it is worth noting that my box has become quite unstable since
> i started to use oprofile and pktgen together.  sshd stops responding,
> and the network seems to go down.  not sure what is happening there...
> this instability seems to be persisting across reboots, unfortunately...
> 
> 
> 
> 
> 
> 
> 60 bytes
> --------
> 
> 60 1195259
> 60 1206652
> 60 1139822
> 60 1206650
> 60 1206654
> 60 1136447
> 60 1206651
> 60 1148050
> 60 1206504
> 60 1206653
> 
> CPU: P4 / Xeon with 2 hyper-threads, speed 3067.25 MHz (estimated)
> Counted GLOBAL_POWER_EVENTS events (time during which processor is not stopped) with a unit mask of 0x01 (mandatory) count 100000
> vma      samples  %        image name               app name                 symbol name
> 00004337 1626886  57.5170  pktgen.ko                pktgen                   pktgen_thread_worker
> c02f389d 282974   10.0043  vmlinux                  vmlinux                  _spin_lock
> c021adc0 219795    7.7706  vmlinux                  vmlinux                  e1000_clean_tx
> c02f3904 164371    5.8112  vmlinux                  vmlinux                  _spin_lock_bh
> c0219c74 160383    5.6702  vmlinux                  vmlinux                  e1000_xmit_frame
> c02f3870 124564    4.4038  vmlinux                  vmlinux                  _spin_trylock
> 000041d1 48511     1.7151  pktgen.ko                pktgen                   next_to_run
> c02f399a 46205     1.6335  vmlinux                  vmlinux                  _spin_unlock_irqrestore
> c010c7d9 20876     0.7381  vmlinux                  vmlinux                  mark_offset_tsc
> c011fdb2 13116     0.4637  vmlinux                  vmlinux                  local_bh_enable
> c0107248 8166      0.2887  vmlinux                  vmlinux                  timer_interrupt
> c0103970 5607      0.1982  vmlinux                  vmlinux                  apic_timer_interrupt
> c010123a 5368      0.1898  vmlinux                  vmlinux                  default_idle
> c02f39a5 4256      0.1505  vmlinux                  vmlinux                  _spin_unlock_bh
> c0103c08 4042      0.1429  vmlinux                  vmlinux                  page_fault
> 0804ae00 3930      0.1389  oprofiled                oprofiled                sfile_find
> 0804aa10 3573      0.1263  oprofiled                oprofiled                get_file
> 
> 
> 
> 64 bytes
> --------
> 
> 64 606104
> 64 597737
> 64 594927
> 64 595531
> 64 606876
> 64 594751
> 64 595709
> 64 595070
> 64 606876
> 64 595600
> 
> CPU: P4 / Xeon with 2 hyper-threads, speed 3067.25 MHz (estimated)
> Counted GLOBAL_POWER_EVENTS events (time during which processor is not stopped) with a unit mask of 0x01 (mandatory) count 100000
> vma      samples  %        image name               app name                 symbol name
> 00004337 3688998  68.9133  pktgen.ko                pktgen                   pktgen_thread_worker
> c02f389d 519536    9.7053  vmlinux                  vmlinux                  _spin_lock
> c021adc0 271791    5.0773  vmlinux                  vmlinux                  e1000_clean_tx
> c0219c74 214428    4.0057  vmlinux                  vmlinux                  e1000_xmit_frame
> c02f3904 166334    3.1072  vmlinux                  vmlinux                  _spin_lock_bh
> c02f3870 127623    2.3841  vmlinux                  vmlinux                  _spin_trylock
> 000041d1 111650    2.0857  pktgen.ko                pktgen                   next_to_run
> c02f399a 47428     0.8860  vmlinux                  vmlinux                  _spin_unlock_irqrestore
> c010c7d9 39586     0.7395  vmlinux                  vmlinux                  mark_offset_tsc
> c0107248 14671     0.2741  vmlinux                  vmlinux                  timer_interrupt
> c011fdb2 12926     0.2415  vmlinux                  vmlinux                  local_bh_enable
> c0103970 11778     0.2200  vmlinux                  vmlinux                  apic_timer_interrupt
> c010123a 9282      0.1734  vmlinux                  vmlinux                  default_idle
> 0804ae00 7449      0.1392  oprofiled                oprofiled                sfile_find
> 0804aa10 6387      0.1193  oprofiled                oprofiled                get_file
> 0804ac30 6234      0.1165  oprofiled                oprofiled                sfile_log_sample
> 0804f4b0 5852      0.1093  oprofiled                oprofiled                odb_insert
> 
> 
> 
> 68 bytes
> --------
> 
> 68 1124822
> 68 1124805
> 68 1090006
> 68 1124822
> 68 1089775
> 68 1124812
> 68 1123305
> 68 1091796
> 68 1124820
> 68 1087043
> 
> CPU: P4 / Xeon with 2 hyper-threads, speed 3067.25 MHz (estimated)
> Counted GLOBAL_POWER_EVENTS events (time during which processor is not stopped) with a unit mask of 0x01 (mandatory) count 100000
> vma      samples  %        image name               app name                 symbol name
> 00004337 1753028  58.4510  pktgen.ko                pktgen                   pktgen_thread_worker
> c02f389d 301835   10.0641  vmlinux                  vmlinux                  _spin_lock
> c021adc0 223405    7.4490  vmlinux                  vmlinux                  e1000_clean_tx
> c02f3904 167118    5.5722  vmlinux                  vmlinux                  _spin_lock_bh
> c0219c74 166016    5.5355  vmlinux                  vmlinux                  e1000_xmit_frame
> c02f3870 131516    4.3851  vmlinux                  vmlinux                  _spin_trylock
> 000041d1 56334     1.8783  pktgen.ko                pktgen                   next_to_run
> c02f399a 46860     1.5624  vmlinux                  vmlinux                  _spin_unlock_irqrestore
> c010c7d9 26188     0.8732  vmlinux                  vmlinux                  mark_offset_tsc
> c011fdb2 12199     0.4068  vmlinux                  vmlinux                  local_bh_enable
> c0107248 10399     0.3467  vmlinux                  vmlinux                  timer_interrupt
> c010123a 8799      0.2934  vmlinux                  vmlinux                  default_idle
> c0103970 8194      0.2732  vmlinux                  vmlinux                  apic_timer_interrupt
> c0117346 4822      0.1608  vmlinux                  vmlinux                  find_busiest_group
> 0804ae00 4214      0.1405  oprofiled                oprofiled                sfile_find
> c02f39a5 3955      0.1319  vmlinux                  vmlinux                  _spin_unlock_bh
> 0804aa10 3745      0.1249  oprofiled                oprofiled                get_file
> 
> 
> 
> here is the detailed breakdown for the 60 byte pktgen:
> 
> CPU: P4 / Xeon with 2 hyper-threads, speed 3067.25 MHz (estimated)
> Counted GLOBAL_POWER_EVENTS events (time during which processor is not stopped) with a unit mask of 0x01 (mandatory) count 100000
> vma      samples  %        image name               app name                 symbol name
> 00004337 1626886  57.5170  pktgen.ko                pktgen                   pktgen_thread_worker
>   00004440 9        5.5e-04
>   00004444 1557      0.0957
>   00004446 17        0.0010
>   0000444c 4156      0.2555
>   00004450 19        0.0012
>   00004455 762       0.0468
>   00004457 136       0.0084
>   00004459 20        0.0012
>   0000445f 6157      0.3785
>   00004465 23        0.0014
>   00004469 1133      0.0696
>   0000446f 246       0.0151
>   00004471 540       0.0332
>   000044f0 310       0.0191
>   000044f4 115       0.0071
>   000044f7 17232     1.0592
>   000044f9 377       0.0232
>   000044ff 65        0.0040
>   00004503 28        0.0017
>   00004506 15       9.2e-04
>   00004508 5        3.1e-04
>   0000450e 102       0.0063
>   00004514 15       9.2e-04
>   0000451c 21        0.0013
>   00004522 7        4.3e-04
>   00004524 2        1.2e-04
>   00004541 10       6.1e-04
>   00004543 79        0.0049
>   00004583 287       0.0176
>   00004587 13       8.0e-04
>   0000458d 2        1.2e-04
>   0000458f 3598      0.2212
>   00004594 4057      0.2494
>   00004598 100       0.0061
>   0000459b 166       0.0102
>   0000459d 22        0.0014
>   000045a3 28        0.0017
>   000045a9 12       7.4e-04
>   000045b0 127711    7.8500
>   000045b6 17        0.0010
>   000045ba 11       6.8e-04
>   000045c0 1295      0.0796
>   000045c2 2869      0.1763
>   000045c8 24        0.0015
>   000045cf 1308      0.0804
>   000045d5 123       0.0076
>   000045df 2964      0.1822
>   000045e6 8111      0.4986
>   000045e9 42        0.0026
>   000045eb 1        6.1e-05
>   000045f2 1271      0.0781
>   000045f8 3146      0.1934
>   000045fe 8395      0.5160
>   00004600 84807     5.2128
>   00004604 21        0.0013
>   00004608 4223      0.2596
>   0000460a 481       0.0296
>   00004610 55        0.0034
>   00004612 9        5.5e-04
>   00004616 1        6.1e-05
>   00004618 4287      0.2635
>   0000461a 3        1.8e-04
>   0000461c 59052     3.6298
>   0000461e 28        0.0017
>   00004620 3        1.8e-04
>   00004622 58473     3.5942
>   00004624 79        0.0049
>   00004628 33        0.0020
>   0000462c 4279      0.2630
>   00004632 84        0.0052
>   00004634 10       6.1e-04
>   00004638 80        0.0049
>   0000463c 8483      0.5214
>   00004640 1126      0.0692
>   00004644 7147      0.4393
>   0000464a 27        0.0017
>   00004650 73        0.0045
>   00004652 2        1.2e-04
>   00004657 4070      0.2502
>   0000465d 36        0.0022
>   00004663 3        1.8e-04
>   00004665 2        1.2e-04
>   00004667 20        0.0012
>   0000466d 1        6.1e-05
>   00004673 8        4.9e-04
>   00004679 4197      0.2580
>   0000467b 2        1.2e-04
>   00004681 11       6.8e-04
>   00004683 2        1.2e-04
>   00004685 2        1.2e-04
>   000046bb 2        1.2e-04
>   000046c1 2        1.2e-04
>   000046c7 6        3.7e-04
>   000046d4 1        6.1e-05
>   000046f3 365       0.0224
>   000046f5 237535   14.6006
>   000046f7 10181     0.6258
>   000046fb 157       0.0097
>   000046fd 238       0.0146
>   00004700 120       0.0074
>   00004702 31        0.0019
>   00004709 14344     0.8817
>   0000470c 8        4.9e-04
>   0000470e 1        6.1e-05
>   00004714 10       6.1e-04
>   00004716 313053   19.2425
>   00004718 255       0.0157
>   0000471a 14164     0.8706
>   00004720 683       0.0420
>   00004726 25085     1.5419
>   0000472a 538       0.0331
>   0000472d 290       0.0178
>   0000472f 359       0.0221
>   00004735 139       0.0085
>   00004737 245644   15.0990
>   00004739 20521     1.2614
>   0000473f 368       0.0226
>   00004741 846       0.0520
>   00004743 237       0.0146
>   00004745 2        1.2e-04
>   00004747 14       8.6e-04
>   00004749 8894      0.5467
>   0000474b 185233   11.3857
>   0000474d 384       0.0236
>   0000474f 69        0.0042
>   00004751 80331     4.9377
>   00004753 506       0.0311
>   00004755 148       0.0091
>   00004757 111       0.0068
>   0000475d 1430      0.0879
>   00004763 179       0.0110
>   00004769 96        0.0059
>   0000476d 411       0.0253
>   00004771 780       0.0479
>   00004775 4090      0.2514
>   00004777 9        5.5e-04
>   0000477b 12       7.4e-04
>   0000477e 16       9.8e-04
>   00004781 17        0.0010
>   00004787 43        0.0026
>   00004789 1        6.1e-05
>   0000478f 8        4.9e-04
>   00004797 412       0.0253
>   0000479b 4016      0.2469
>   000047a1 192       0.0118
>   000047a4 1660      0.1020
>   000047aa 78        0.0048
>   000047ae 52        0.0032
>   000047b0 327       0.0201
>   000047b3 173       0.0106
>   000047b6 35        0.0022
>   000047b8 789       0.0485
>   000047ba 29        0.0018
>   000047bd 9        5.5e-04
>   000047c3 1632      0.1003
>   000047c6 4049      0.2489
>   000047cc 15       9.2e-04
>   000047cf 33        0.0020
>   000047d0 11       6.8e-04
>   000047d6 1032      0.0634
>   000047da 22        0.0014
>   000047dd 52        0.0032
>   000047df 33        0.0020
>   000047ea 1        6.1e-05
>   000047ee 2        1.2e-04
>   000047f6 1        6.1e-05
>   000047ff 1        6.1e-05
>   00004809 1        6.1e-05
>   0000480e 1        6.1e-05
>   00004817 2        1.2e-04
>   0000481b 7        4.3e-04
>   0000487f 284       0.0175
>   00004885 24        0.0015
>   0000488b 4        2.5e-04
>   0000488e 3625      0.2228
>   00004894 5        3.1e-04
>   0000489a 13       8.0e-04
>   000049ff 34        0.0021
>   00004a02 30        0.0018
>   00004a04 4        2.5e-04
>   00004a0f 3        1.8e-04
>   00004a13 26        0.0016
>   00004a1e 1        6.1e-05
>   00004a25 88        0.0054
>   00004a36 1        6.1e-05
>   00004a47 3        1.8e-04
>   00004a49 60        0.0037
>   00004a51 3        1.8e-04
>   00004a61 1        6.1e-05
>   00004a65 42        0.0026
>   00004a6b 50        0.0031
> 
> 
> 
> here is the detailed breakdown for the 64 byte pktgen:
> 
> CPU: P4 / Xeon with 2 hyper-threads, speed 3067.25 MHz (estimated)
> Counted GLOBAL_POWER_EVENTS events (time during which processor is not stopped) with a unit mask of 0x01 (mandatory) count 100000
> vma      samples  %        image name               app name                 symbol name
> 00004337 3688998  68.9133  pktgen.ko                pktgen                   pktgen_thread_worker
>   00004440 12       3.3e-04
>   00004444 3431      0.0930
>   00004446 33       8.9e-04
>   0000444c 4082      0.1107
>   00004450 30       8.1e-04
>   00004455 1041      0.0282
>   00004457 292       0.0079
>   00004459 36       9.8e-04
>   0000445f 16964     0.4599
>   00004465 73        0.0020
>   00004469 1442      0.0391
>   0000446f 528       0.0143
>   00004471 818       0.0222
>   000044f0 347       0.0094
>   000044f4 145       0.0039
>   000044f7 53514     1.4506
>   000044f9 369       0.0100
>   000044ff 90        0.0024
>   00004503 41        0.0011
>   00004506 24       6.5e-04
>   00004508 5        1.4e-04
>   0000450e 192       0.0052
>   00004514 37        0.0010
>   00004516 5        1.4e-04
>   0000451c 36       9.8e-04
>   00004522 10       2.7e-04
>   00004524 1        2.7e-05
>   00004541 8        2.2e-04
>   00004543 144       0.0039
>   00004583 503       0.0136
>   00004587 22       6.0e-04
>   0000458d 10       2.7e-04
>   0000458f 3437      0.0932
>   00004594 3533      0.0958
>   00004598 541       0.0147
>   0000459b 129       0.0035
>   0000459d 7        1.9e-04
>   000045a3 38        0.0010
>   000045a9 13       3.5e-04
>   000045b0 121838    3.3027
>   000045b6 14       3.8e-04
>   000045ba 26       7.0e-04
>   000045c0 2330      0.0632
>   000045c2 1843      0.0500
>   000045c8 21       5.7e-04
>   000045cf 4855      0.1316
>   000045d5 203       0.0055
>   000045df 1317      0.0357
>   000045e6 8076      0.2189
>   000045e9 381       0.0103
>   000045eb 1        2.7e-05
>   000045f2 2355      0.0638
>   000045f8 1362      0.0369
>   000045fe 7460      0.2022
>   00004600 84246     2.2837
>   00004604 11       3.0e-04
>   00004608 4122      0.1117
>   0000460a 25       6.8e-04
>   00004610 24       6.5e-04
>   00004612 1        2.7e-05
>   00004614 1        2.7e-05
>   00004616 1        2.7e-05
>   00004618 4254      0.1153
>   0000461c 57898     1.5695
>   0000461e 6        1.6e-04
>   00004620 7        1.9e-04
>   00004622 57801     1.5668
>   00004624 24       6.5e-04
>   00004628 13       3.5e-04
>   0000462c 4185      0.1134
>   00004632 97        0.0026
>   00004634 16       4.3e-04
>   00004638 99        0.0027
>   0000463c 8288      0.2247
>   00004640 2585      0.0701
>   00004644 5590      0.1515
>   0000464a 14       3.8e-04
>   00004650 77        0.0021
>   00004652 3        8.1e-05
>   00004657 4077      0.1105
>   0000465d 41        0.0011
>   00004663 10       2.7e-04
>   00004667 19       5.2e-04
>   0000466d 2        5.4e-05
>   00004673 4        1.1e-04
>   00004679 4035      0.1094
>   0000467b 1        2.7e-05
>   00004681 5        1.4e-04
>   00004683 6        1.6e-04
>   00004685 2        5.4e-05
>   000046bb 1        2.7e-05
>   000046c7 1        2.7e-05
>   000046d4 4        1.1e-04
>   000046f3 415       0.0112
>   000046f5 825806   22.3856
>   000046f7 43980     1.1922
>   000046fb 256       0.0069
>   000046fd 286       0.0078
>   00004700 108       0.0029
>   00004702 41        0.0011
>   00004705 5        1.4e-04
>   00004709 27774     0.7529
>   0000470c 17       4.6e-04
>   0000470e 9        2.4e-04
>   00004714 19       5.2e-04
>   00004716 605096   16.4027
>   00004718 548       0.0149
>   0000471a 24782     0.6718
>   00004720 842       0.0228
>   00004726 95423     2.5867
>   0000472a 516       0.0140
>   0000472d 510       0.0138
>   0000472f 389       0.0105
>   00004735 316       0.0086
>   00004737 746069   20.2242
>   00004739 62574     1.6962
>   0000473f 565       0.0153
>   00004741 941       0.0255
>   00004743 91        0.0025
>   00004745 8        2.2e-04
>   00004747 3        8.1e-05
>   00004749 34135     0.9253
>   0000474b 477712   12.9496
>   0000474d 561       0.0152
>   0000474f 155       0.0042
>   00004751 199265    5.4016
>   00004753 684       0.0185
>   00004755 137       0.0037
>   00004757 119       0.0032
>   0000475d 6527      0.1769
>   00004763 217       0.0059
>   00004769 120       0.0033
>   0000476d 665       0.0180
>   00004771 558       0.0151
>   00004775 4148      0.1124
>   00004777 6        1.6e-04
>   0000477b 7        1.9e-04
>   0000477e 5        1.4e-04
>   00004781 14       3.8e-04
>   00004787 60        0.0016
>   00004789 4        1.1e-04
>   0000478f 4        1.1e-04
>   00004797 669       0.0181
>   0000479b 4271      0.1158
>   000047a1 17245     0.4675
>   000047a4 3138      0.0851
>   000047aa 716       0.0194
>   000047ae 112       0.0030
>   000047b0 508       0.0138
>   000047b3 736       0.0200
>   000047b6 53        0.0014
>   000047b8 604       0.0164
>   000047ba 47        0.0013
>   000047bd 525       0.0142
>   000047c3 6094      0.1652
>   000047c6 4068      0.1103
>   000047cc 35       9.5e-04
>   000047cf 25       6.8e-04
>   000047d0 10       2.7e-04
>   000047d6 995       0.0270
>   000047da 26       7.0e-04
>   000047dd 120       0.0033
>   000047df 50        0.0014
>   000047ee 3        8.1e-05
>   000047fa 1        2.7e-05
>   00004817 4        1.1e-04
>   0000481b 27       7.3e-04
>   0000487f 539       0.0146
>   00004885 30       8.1e-04
>   0000488b 5        1.4e-04
>   0000488e 3544      0.0961
>   00004894 9        2.4e-04
>   0000489a 33       8.9e-04
>   000049ff 67        0.0018
>   00004a02 28       7.6e-04
>   00004a11 1        2.7e-05
>   00004a13 4        1.1e-04
>   00004a18 3        8.1e-05
>   00004a1e 1        2.7e-05
>   00004a25 168       0.0046
>   00004a36 3        8.1e-05
>   00004a47 11       3.0e-04
>   00004a49 139       0.0038
>   00004a51 8        2.2e-04
>   00004a59 1        2.7e-05
>   00004a61 5        1.4e-04
>   00004a65 67        0.0018
>   00004a6b 97        0.0026
> 
> 
> and finally, here's the disasm of the threadworker function:
> 
> 
> 00004337 <pktgen_Thread_worker>:
>     4337:	55                   	push   %ebp
>     4338:	57                   	push   %edi
>     4339:	56                   	push   %esi
>     433a:	53                   	push   %ebx
>     433b:	bb 00 e0 ff ff       	mov    $0xffffe000,%ebx
>     4340:	21 e3                	and    %esp,%ebx
>     4342:	83 ec 2c             	sub    $0x2c,%esp
>     4345:	89 44 24 28          	mov    %eax,0x28(%esp)
>     4349:	8b b0 bc 02 00 00    	mov    0x2bc(%eax),%esi
>     434f:	c7 44 24 20 00 00 00 	movl   $0x0,0x20(%esp)
>     4356:	00 
>     4357:	c7 04 24 c2 06 00 00 	movl   $0x6c2,(%esp)
>     435e:	89 74 24 04          	mov    %esi,0x4(%esp)
>     4362:	e8 fc ff ff ff       	call   4363 <pktgen_thread_worker+0x2c>
>     4367:	8b 03                	mov    (%ebx),%eax
>     4369:	8b 80 90 04 00 00    	mov    0x490(%eax),%eax
>     436f:	05 04 05 00 00       	add    $0x504,%eax
>     4374:	e8 fc ff ff ff       	call   4375 <pktgen_thread_worker+0x3e>
>     4379:	8b 03                	mov    (%ebx),%eax
>     437b:	c7 80 94 04 00 00 ff 	movl   $0xfffbbeff,0x494(%eax)
>     4382:	be fb ff 
>     4385:	c7 80 98 04 00 00 ff 	movl   $0xffffffff,0x498(%eax)
>     438c:	ff ff ff 
>     438f:	e8 fc ff ff ff       	call   4390 <pktgen_thread_worker+0x59>
>     4394:	8b 03                	mov    (%ebx),%eax
>     4396:	8b 80 90 04 00 00    	mov    0x490(%eax),%eax
>     439c:	05 04 05 00 00       	add    $0x504,%eax
>     43a1:	e8 fc ff ff ff       	call   43a2 <pktgen_thread_worker+0x6b>
>     43a6:	89 f1                	mov    %esi,%ecx
>     43a8:	ba 01 00 00 00       	mov    $0x1,%edx
>     43ad:	d3 e2                	shl    %cl,%edx
>     43af:	8b 03                	mov    (%ebx),%eax
>     43b1:	e8 fc ff ff ff       	call   43b2 <pktgen_thread_worker+0x7b>
>     43b6:	39 73 10             	cmp    %esi,0x10(%ebx)
>     43b9:	74 08                	je     43c3 <pktgen_thread_worker+0x8c>
>     43bb:	0f 0b                	ud2a   
>     43bd:	27                   	daa    
>     43be:	0b b0 06 00 00 8b    	or     0x8b000006(%eax),%esi
>     43c4:	44                   	inc    %esp
>     43c5:	24 28                	and    $0x28,%al
>     43c7:	8b 54 24 28          	mov    0x28(%esp),%edx
>     43cb:	05 c0 02 00 00       	add    $0x2c0,%eax
>     43d0:	89 44 24 1c          	mov    %eax,0x1c(%esp)
>     43d4:	c7 82 c0 02 00 00 01 	movl   $0x1,0x2c0(%edx)
>     43db:	00 00 00 
>     43de:	89 d0                	mov    %edx,%eax
>     43e0:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
>     43e4:	05 c4 02 00 00       	add    $0x2c4,%eax
>     43e9:	89 41 04             	mov    %eax,0x4(%ecx)
>     43ec:	89 41 08             	mov    %eax,0x8(%ecx)
>     43ef:	83 a2 b4 02 00 00 f0 	andl   $0xfffffff0,0x2b4(%edx)
>     43f6:	8b 03                	mov    (%ebx),%eax
>     43f8:	8b 80 a8 00 00 00    	mov    0xa8(%eax),%eax
>     43fe:	89 82 b8 02 00 00    	mov    %eax,0x2b8(%edx)
>     4404:	8b 03                	mov    (%ebx),%eax
>     4406:	8b 80 a8 00 00 00    	mov    0xa8(%eax),%eax
>     440c:	89 74 24 04          	mov    %esi,0x4(%esp)
>     4410:	c7 04 24 a0 06 00 00 	movl   $0x6a0,(%esp)
>     4417:	89 44 24 08          	mov    %eax,0x8(%esp)
>     441b:	e8 fc ff ff ff       	call   441c <pktgen_thread_worker+0xe5>
>     4420:	8b 44 24 28          	mov    0x28(%esp),%eax
>     4424:	8b 80 b0 02 00 00    	mov    0x2b0(%eax),%eax
>     442a:	89 44 24 24          	mov    %eax,0x24(%esp)
>     442e:	8b 03                	mov    (%ebx),%eax
>     4430:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
>     4436:	f0 83 44 24 00 00    	lock addl $0x0,0x0(%esp)
>     443c:	89 5c 24 18          	mov    %ebx,0x18(%esp)
>     4440:	8b 54 24 18          	mov    0x18(%esp),%edx
>     4444:	8b 02                	mov    (%edx),%eax
>     4446:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
>     444c:	8b 44 24 28          	mov    0x28(%esp),%eax
>     4450:	e8 7c fd ff ff       	call   41d1 <next_to_run>
>     4455:	85 c0                	test   %eax,%eax
>     4457:	89 c6                	mov    %eax,%esi
>     4459:	0f 84 aa 03 00 00    	je     4809 <pktgen_thread_worker+0x4d2>
>     445f:	8b 88 44 04 00 00    	mov    0x444(%eax),%ecx
>     4465:	89 4c 24 14          	mov    %ecx,0x14(%esp)
>     4469:	8b b8 90 02 00 00    	mov    0x290(%eax),%edi
>     446f:	85 ff                	test   %edi,%edi
>     4471:	74 7d                	je     44f0 <pktgen_thread_worker+0x1b9>
>     4473:	0f 31                	rdtsc  
>     4475:	89 44 24 0c          	mov    %eax,0xc(%esp)
>     4479:	89 54 24 10          	mov    %edx,0x10(%esp)
>     447d:	85 d2                	test   %edx,%edx
>     447f:	8b 1d 1c 00 00 00    	mov    0x1c,%ebx
>     4485:	89 d1                	mov    %edx,%ecx
>     4487:	89 c5                	mov    %eax,%ebp
>     4489:	74 08                	je     4493 <pktgen_thread_worker+0x15c>
>     448b:	89 d0                	mov    %edx,%eax
>     448d:	31 d2                	xor    %edx,%edx
>     448f:	f7 f3                	div    %ebx
>     4491:	89 c1                	mov    %eax,%ecx
>     4493:	89 e8                	mov    %ebp,%eax
>     4495:	f7 f3                	div    %ebx
>     4497:	89 ca                	mov    %ecx,%edx
>     4499:	89 d3                	mov    %edx,%ebx
>     449b:	8b 96 b8 02 00 00    	mov    0x2b8(%esi),%edx
>     44a1:	39 d3                	cmp    %edx,%ebx
>     44a3:	89 c1                	mov    %eax,%ecx
>     44a5:	8b 86 b4 02 00 00    	mov    0x2b4(%esi),%eax
>     44ab:	77 37                	ja     44e4 <pktgen_thread_worker+0x1ad>
>     44ad:	72 04                	jb     44b3 <pktgen_thread_worker+0x17c>
>     44af:	39 c1                	cmp    %eax,%ecx
>     44b1:	73 31                	jae    44e4 <pktgen_thread_worker+0x1ad>
>     44b3:	8b be b4 02 00 00    	mov    0x2b4(%esi),%edi
>     44b9:	29 cf                	sub    %ecx,%edi
>     44bb:	81 ff 0f 27 00 00    	cmp    $0x270f,%edi
>     44c1:	0f 86 ee 04 00 00    	jbe    49b5 <pktgen_thread_worker+0x67e>
>     44c7:	b9 d3 4d 62 10       	mov    $0x10624dd3,%ecx
>     44cc:	89 f8                	mov    %edi,%eax
>     44ce:	f7 e1                	mul    %ecx
>     44d0:	89 d1                	mov    %edx,%ecx
>     44d2:	89 f2                	mov    %esi,%edx
>     44d4:	c1 e9 06             	shr    $0x6,%ecx
>     44d7:	89 c8                	mov    %ecx,%eax
>     44d9:	e8 10 e4 ff ff       	call   28ee <pg_udelay>
>     44de:	8b be 90 02 00 00    	mov    0x290(%esi),%edi
>     44e4:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
>     44ea:	0f 84 d5 04 00 00    	je     49c5 <pktgen_thread_worker+0x68e>
>     44f0:	8b 54 24 14          	mov    0x14(%esp),%edx
>     44f4:	8b 42 24             	mov    0x24(%edx),%eax
>     44f7:	a8 01                	test   $0x1,%al
>     44f9:	0f 85 f4 01 00 00    	jne    46f3 <pktgen_thread_worker+0x3bc>
>     44ff:	8b 4c 24 18          	mov    0x18(%esp),%ecx
>     4503:	8b 41 08             	mov    0x8(%ecx),%eax
>     4506:	a8 08                	test   $0x8,%al
>     4508:	0f 85 e5 01 00 00    	jne    46f3 <pktgen_thread_worker+0x3bc>
>     450e:	8b 86 c8 02 00 00    	mov    0x2c8(%esi),%eax
>     4514:	85 c0                	test   %eax,%eax
>     4516:	0f 85 63 03 00 00    	jne    487f <pktgen_thread_worker+0x548>
>     451c:	8b 96 40 04 00 00    	mov    0x440(%esi),%edx
>     4522:	85 d2                	test   %edx,%edx
>     4524:	75 5d                	jne    4583 <pktgen_thread_worker+0x24c>
>     4526:	8b 86 c4 02 00 00    	mov    0x2c4(%esi),%eax
>     452c:	83 c0 01             	add    $0x1,%eax
>     452f:	3b 86 e8 02 00 00    	cmp    0x2e8(%esi),%eax
>     4535:	89 86 c4 02 00 00    	mov    %eax,0x2c4(%esi)
>     453b:	0f 83 5f 03 00 00    	jae    48a0 <pktgen_thread_worker+0x569>
>     4541:	85 d2                	test   %edx,%edx
>     4543:	75 3e                	jne    4583 <pktgen_thread_worker+0x24c>
>     4545:	f6 86 81 02 00 00 02 	testb  $0x2,0x281(%esi)
>     454c:	0f 84 87 03 00 00    	je     48d9 <pktgen_thread_worker+0x5a2>
>     4552:	89 f2                	mov    %esi,%edx
>     4554:	8b 44 24 14          	mov    0x14(%esp),%eax
>     4558:	e8 fc f1 ff ff       	call   3759 <fill_packet_ipv6>
>     455d:	85 c0                	test   %eax,%eax
>     455f:	89 86 40 04 00 00    	mov    %eax,0x440(%esi)
>     4565:	0f 84 87 03 00 00    	je     48f2 <pktgen_thread_worker+0x5bb>
>     456b:	83 86 bc 02 00 00 01 	addl   $0x1,0x2bc(%esi)
>     4572:	c7 86 c4 02 00 00 00 	movl   $0x0,0x2c4(%esi)
>     4579:	00 00 00 
>     457c:	83 96 c0 02 00 00 00 	adcl   $0x0,0x2c0(%esi)
>     4583:	8b 7c 24 14          	mov    0x14(%esp),%edi
>     4587:	81 c7 2c 01 00 00    	add    $0x12c,%edi
>     458d:	89 f8                	mov    %edi,%eax
>     458f:	e8 fc ff ff ff       	call   4590 <pktgen_thread_worker+0x259>
>     4594:	8b 54 24 14          	mov    0x14(%esp),%edx
>     4598:	8b 42 24             	mov    0x24(%edx),%eax
>     459b:	a8 01                	test   $0x1,%al
>     459d:	0f 85 6c 03 00 00    	jne    490f <pktgen_thread_worker+0x5d8>
>     45a3:	8b 86 40 04 00 00    	mov    0x440(%esi),%eax
>     45a9:	f0 ff 80 94 00 00 00 	lock incl 0x94(%eax)
>     45b0:	8b 86 40 04 00 00    	mov    0x440(%esi),%eax
>     45b6:	8b 54 24 14          	mov    0x14(%esp),%edx
>     45ba:	ff 92 6c 01 00 00    	call   *0x16c(%edx)
>     45c0:	85 c0                	test   %eax,%eax
>     45c2:	0f 85 37 04 00 00    	jne    49ff <pktgen_thread_worker+0x6c8>
>     45c8:	83 86 9c 02 00 00 01 	addl   $0x1,0x29c(%esi)
>     45cf:	8b 86 2c 04 00 00    	mov    0x42c(%esi),%eax
>     45d5:	c7 86 c8 02 00 00 01 	movl   $0x1,0x2c8(%esi)
>     45dc:	00 00 00 
>     45df:	83 96 a0 02 00 00 00 	adcl   $0x0,0x2a0(%esi)
>     45e6:	83 c0 04             	add    $0x4,%eax
>     45e9:	31 d2                	xor    %edx,%edx
>     45eb:	83 86 e4 02 00 00 01 	addl   $0x1,0x2e4(%esi)
>     45f2:	01 86 a4 02 00 00    	add    %eax,0x2a4(%esi)
>     45f8:	11 96 a8 02 00 00    	adc    %edx,0x2a8(%esi)
>     45fe:	0f 31                	rdtsc  
>     4600:	89 44 24 0c          	mov    %eax,0xc(%esp)
>     4604:	89 54 24 10          	mov    %edx,0x10(%esp)
>     4608:	85 d2                	test   %edx,%edx
>     460a:	8b 1d 1c 00 00 00    	mov    0x1c,%ebx
>     4610:	89 d1                	mov    %edx,%ecx
>     4612:	89 c5                	mov    %eax,%ebp
>     4614:	74 08                	je     461e <pktgen_thread_worker+0x2e7>
>     4616:	89 d0                	mov    %edx,%eax
>     4618:	31 d2                	xor    %edx,%edx
>     461a:	f7 f3                	div    %ebx
>     461c:	89 c1                	mov    %eax,%ecx
>     461e:	89 e8                	mov    %ebp,%eax
>     4620:	f7 f3                	div    %ebx
>     4622:	89 ca                	mov    %ecx,%edx
>     4624:	89 54 24 10          	mov    %edx,0x10(%esp)
>     4628:	89 44 24 0c          	mov    %eax,0xc(%esp)
>     462c:	8b 8e 90 02 00 00    	mov    0x290(%esi),%ecx
>     4632:	31 db                	xor    %ebx,%ebx
>     4634:	01 4c 24 0c          	add    %ecx,0xc(%esp)
>     4638:	11 5c 24 10          	adc    %ebx,0x10(%esp)
>     463c:	8b 54 24 0c          	mov    0xc(%esp),%edx
>     4640:	8b 4c 24 10          	mov    0x10(%esp),%ecx
>     4644:	89 96 b4 02 00 00    	mov    %edx,0x2b4(%esi)
>     464a:	89 8e b8 02 00 00    	mov    %ecx,0x2b8(%esi)
>     4650:	89 f8                	mov    %edi,%eax
>     4652:	e8 fc ff ff ff       	call   4653 <pktgen_thread_worker+0x31c>
>     4657:	8b 96 98 02 00 00    	mov    0x298(%esi),%edx
>     465d:	8b 86 94 02 00 00    	mov    0x294(%esi),%eax
>     4663:	89 d1                	mov    %edx,%ecx
>     4665:	09 c1                	or     %eax,%ecx
>     4667:	0f 84 f6 00 00 00    	je     4763 <pktgen_thread_worker+0x42c>
>     466d:	8b 9e a0 02 00 00    	mov    0x2a0(%esi),%ebx
>     4673:	8b 8e 9c 02 00 00    	mov    0x29c(%esi),%ecx
>     4679:	39 d3                	cmp    %edx,%ebx
>     467b:	0f 82 e2 00 00 00    	jb     4763 <pktgen_thread_worker+0x42c>
>     4681:	77 08                	ja     468b <pktgen_thread_worker+0x354>
>     4683:	39 c1                	cmp    %eax,%ecx
>     4685:	0f 82 d8 00 00 00    	jb     4763 <pktgen_thread_worker+0x42c>
>     468b:	8b 8e 40 04 00 00    	mov    0x440(%esi),%ecx
>     4691:	8b 81 94 00 00 00    	mov    0x94(%ecx),%eax
>     4697:	83 f8 01             	cmp    $0x1,%eax
>     469a:	74 4e                	je     46ea <pktgen_thread_worker+0x3b3>
>     469c:	0f 31                	rdtsc  
>     469e:	89 c7                	mov    %eax,%edi
>     46a0:	8b 81 94 00 00 00    	mov    0x94(%ecx),%eax
>     46a6:	83 f8 01             	cmp    $0x1,%eax
>     46a9:	89 d5                	mov    %edx,%ebp
>     46ab:	74 2b                	je     46d8 <pktgen_thread_worker+0x3a1>
>     46ad:	bb 00 e0 ff ff       	mov    $0xffffe000,%ebx
>     46b2:	21 e3                	and    %esp,%ebx
>     46b4:	eb 16                	jmp    46cc <pktgen_thread_worker+0x395>
>     46b6:	e8 fc ff ff ff       	call   46b7 <pktgen_thread_worker+0x380>
>     46bb:	8b 86 40 04 00 00    	mov    0x440(%esi),%eax
>     46c1:	8b 80 94 00 00 00    	mov    0x94(%eax),%eax
>     46c7:	83 f8 01             	cmp    $0x1,%eax
>     46ca:	74 0c                	je     46d8 <pktgen_thread_worker+0x3a1>
>     46cc:	8b 03                	mov    (%ebx),%eax
>     46ce:	8b 40 04             	mov    0x4(%eax),%eax
>     46d1:	8b 40 08             	mov    0x8(%eax),%eax
>     46d4:	a8 04                	test   $0x4,%al
>     46d6:	74 de                	je     46b6 <pktgen_thread_worker+0x37f>
>     46d8:	0f 31                	rdtsc  
>     46da:	29 f8                	sub    %edi,%eax
>     46dc:	19 ea                	sbb    %ebp,%edx
>     46de:	01 86 dc 02 00 00    	add    %eax,0x2dc(%esi)
>     46e4:	11 96 e0 02 00 00    	adc    %edx,0x2e0(%esi)
>     46ea:	89 f0                	mov    %esi,%eax
>     46ec:	e8 2f fa ff ff       	call   4120 <pktgen_stop_device>
>     46f1:	eb 70                	jmp    4763 <pktgen_thread_worker+0x42c>
>     46f3:	0f 31                	rdtsc  
>     46f5:	89 d5                	mov    %edx,%ebp
>     46f7:	8b 54 24 14          	mov    0x14(%esp),%edx
>     46fb:	89 c7                	mov    %eax,%edi
>     46fd:	8b 42 24             	mov    0x24(%edx),%eax
>     4700:	a8 02                	test   $0x2,%al
>     4702:	2e 74 e5             	je,pn  46ea <pktgen_thread_worker+0x3b3>
>     4705:	8b 4c 24 18          	mov    0x18(%esp),%ecx
>     4709:	8b 41 08             	mov    0x8(%ecx),%eax
>     470c:	a8 08                	test   $0x8,%al
>     470e:	0f 85 e1 02 00 00    	jne    49f5 <pktgen_thread_worker+0x6be>
>     4714:	0f 31                	rdtsc  
>     4716:	29 f8                	sub    %edi,%eax
>     4718:	19 ea                	sbb    %ebp,%edx
>     471a:	01 86 dc 02 00 00    	add    %eax,0x2dc(%esi)
>     4720:	11 96 e0 02 00 00    	adc    %edx,0x2e0(%esi)
>     4726:	8b 54 24 14          	mov    0x14(%esp),%edx
>     472a:	8b 42 24             	mov    0x24(%edx),%eax
>     472d:	a8 01                	test   $0x1,%al
>     472f:	0f 84 d9 fd ff ff    	je     450e <pktgen_thread_worker+0x1d7>
>     4735:	0f 31                	rdtsc  
>     4737:	85 d2                	test   %edx,%edx
>     4739:	8b 1d 1c 00 00 00    	mov    0x1c,%ebx
>     473f:	89 d1                	mov    %edx,%ecx
>     4741:	89 c7                	mov    %eax,%edi
>     4743:	74 08                	je     474d <pktgen_thread_worker+0x416>
>     4745:	89 d0                	mov    %edx,%eax
>     4747:	31 d2                	xor    %edx,%edx
>     4749:	f7 f3                	div    %ebx
>     474b:	89 c1                	mov    %eax,%ecx
>     474d:	89 f8                	mov    %edi,%eax
>     474f:	f7 f3                	div    %ebx
>     4751:	89 ca                	mov    %ecx,%edx
>     4753:	89 c1                	mov    %eax,%ecx
>     4755:	89 d3                	mov    %edx,%ebx
>     4757:	89 8e b4 02 00 00    	mov    %ecx,0x2b4(%esi)
>     475d:	89 9e b8 02 00 00    	mov    %ebx,0x2b8(%esi)
>     4763:	8b 96 c8 02 00 00    	mov    0x2c8(%esi),%edx
>     4769:	8b 4c 24 24          	mov    0x24(%esp),%ecx
>     476d:	01 54 24 20          	add    %edx,0x20(%esp)
>     4771:	39 4c 24 20          	cmp    %ecx,0x20(%esp)
>     4775:	76 20                	jbe    4797 <pktgen_thread_worker+0x460>
>     4777:	8b 54 24 18          	mov    0x18(%esp),%edx
>     477b:	8b 42 10             	mov    0x10(%edx),%eax
>     477e:	c1 e0 07             	shl    $0x7,%eax
>     4781:	8b b8 00 00 00 00    	mov    0x0(%eax),%edi
>     4787:	85 ff                	test   %edi,%edi
>     4789:	0f 85 1c 02 00 00    	jne    49ab <pktgen_thread_worker+0x674>
>     478f:	c7 44 24 20 00 00 00 	movl   $0x0,0x20(%esp)
>     4796:	00 
>     4797:	8b 4c 24 28          	mov    0x28(%esp),%ecx
>     479b:	8b 91 b4 02 00 00    	mov    0x2b4(%ecx),%edx
>     47a1:	f6 c2 01             	test   $0x1,%dl
>     47a4:	0f 85 7c 00 00 00    	jne    4826 <pktgen_thread_worker+0x4ef>
>     47aa:	8b 4c 24 18          	mov    0x18(%esp),%ecx
>     47ae:	8b 01                	mov    (%ecx),%eax
>     47b0:	8b 40 04             	mov    0x4(%eax),%eax
>     47b3:	8b 40 08             	mov    0x8(%eax),%eax
>     47b6:	a8 04                	test   $0x4,%al
>     47b8:	75 6c                	jne    4826 <pktgen_thread_worker+0x4ef>
>     47ba:	f6 c2 02             	test   $0x2,%dl
>     47bd:	0f 85 c7 01 00 00    	jne    498a <pktgen_thread_worker+0x653>
>     47c3:	f6 c2 04             	test   $0x4,%dl
>     47c6:	0f 85 9d 01 00 00    	jne    4969 <pktgen_thread_worker+0x632>
>     47cc:	80 e2 08             	and    $0x8,%dl
>     47cf:	90                   	nop    
>     47d0:	0f 85 7a 01 00 00    	jne    4950 <pktgen_thread_worker+0x619>
>     47d6:	8b 54 24 18          	mov    0x18(%esp),%edx
>     47da:	8b 42 08             	mov    0x8(%edx),%eax
>     47dd:	a8 08                	test   $0x8,%al
>     47df:	0f 84 5b fc ff ff    	je     4440 <pktgen_thread_worker+0x109>
>     47e5:	e8 fc ff ff ff       	call   47e6 <pktgen_thread_worker+0x4af>
>     47ea:	8b 54 24 18          	mov    0x18(%esp),%edx
>     47ee:	8b 02                	mov    (%edx),%eax
>     47f0:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
>     47f6:	8b 44 24 28          	mov    0x28(%esp),%eax
>     47fa:	e8 d2 f9 ff ff       	call   41d1 <next_to_run>
>     47ff:	85 c0                	test   %eax,%eax
>     4801:	89 c6                	mov    %eax,%esi
>     4803:	0f 85 56 fc ff ff    	jne    445f <pktgen_thread_worker+0x128>
>     4809:	ba 64 00 00 00       	mov    $0x64,%edx
>     480e:	8b 44 24 1c          	mov    0x1c(%esp),%eax
>     4812:	e8 fc ff ff ff       	call   4813 <pktgen_thread_worker+0x4dc>
>     4817:	8b 4c 24 28          	mov    0x28(%esp),%ecx
>     481b:	8b 91 b4 02 00 00    	mov    0x2b4(%ecx),%edx
>     4821:	f6 c2 01             	test   $0x1,%dl
>     4824:	74 84                	je     47aa <pktgen_thread_worker+0x473>
>     4826:	8b 5c 24 28          	mov    0x28(%esp),%ebx
>     482a:	c7 04 24 c8 06 00 00 	movl   $0x6c8,(%esp)
>     4831:	83 c3 0c             	add    $0xc,%ebx
>     4834:	89 5c 24 04          	mov    %ebx,0x4(%esp)
>     4838:	e8 fc ff ff ff       	call   4839 <pktgen_thread_worker+0x502>
>     483d:	8b 44 24 28          	mov    0x28(%esp),%eax
>     4841:	e8 f6 f9 ff ff       	call   423c <pktgen_stop>
>     4846:	89 5c 24 04          	mov    %ebx,0x4(%esp)
>     484a:	c7 04 24 e8 06 00 00 	movl   $0x6e8,(%esp)
>     4851:	e8 fc ff ff ff       	call   4852 <pktgen_thread_worker+0x51b>
>     4856:	8b 44 24 28          	mov    0x28(%esp),%eax
>     485a:	e8 1b fa ff ff       	call   427a <pktgen_rem_all_ifs>
>     485f:	89 5c 24 04          	mov    %ebx,0x4(%esp)
>     4863:	c7 04 24 cc 06 00 00 	movl   $0x6cc,(%esp)
>     486a:	e8 fc ff ff ff       	call   486b <pktgen_thread_worker+0x534>
>     486f:	8b 44 24 28          	mov    0x28(%esp),%eax
>     4873:	83 c4 2c             	add    $0x2c,%esp
>     4876:	5b                   	pop    %ebx
>     4877:	5e                   	pop    %esi
>     4878:	5f                   	pop    %edi
>     4879:	5d                   	pop    %ebp
>     487a:	e9 27 fa ff ff       	jmp    42a6 <pktgen_rem_thread>
>     487f:	8b 96 40 04 00 00    	mov    0x440(%esi),%edx
>     4885:	8b 86 c4 02 00 00    	mov    0x2c4(%esi),%eax
>     488b:	83 c0 01             	add    $0x1,%eax
>     488e:	3b 86 e8 02 00 00    	cmp    0x2e8(%esi),%eax
>     4894:	89 86 c4 02 00 00    	mov    %eax,0x2c4(%esi)
>     489a:	0f 82 a1 fc ff ff    	jb     4541 <pktgen_thread_worker+0x20a>
>     48a0:	85 d2                	test   %edx,%edx
>     48a2:	0f 84 9d fc ff ff    	je     4545 <pktgen_thread_worker+0x20e>
>     48a8:	8b 82 94 00 00 00    	mov    0x94(%edx),%eax
>     48ae:	83 f8 01             	cmp    $0x1,%eax
>     48b1:	74 12                	je     48c5 <pktgen_thread_worker+0x58e>
>     48b3:	f0 ff 8a 94 00 00 00 	lock decl 0x94(%edx)
>     48ba:	0f 94 c0             	sete   %al
>     48bd:	84 c0                	test   %al,%al
>     48bf:	0f 84 80 fc ff ff    	je     4545 <pktgen_thread_worker+0x20e>
>     48c5:	89 d0                	mov    %edx,%eax
>     48c7:	e8 fc ff ff ff       	call   48c8 <pktgen_thread_worker+0x591>
>     48cc:	f6 86 81 02 00 00 02 	testb  $0x2,0x281(%esi)
>     48d3:	0f 85 79 fc ff ff    	jne    4552 <pktgen_thread_worker+0x21b>
>     48d9:	89 f2                	mov    %esi,%edx
>     48db:	8b 44 24 14          	mov    0x14(%esp),%eax
>     48df:	e8 22 e7 ff ff       	call   3006 <fill_packet_ipv4>
>     48e4:	85 c0                	test   %eax,%eax
>     48e6:	89 86 40 04 00 00    	mov    %eax,0x440(%esi)
>     48ec:	0f 85 79 fc ff ff    	jne    456b <pktgen_thread_worker+0x234>
>     48f2:	c7 04 24 08 07 00 00 	movl   $0x708,(%esp)
>     48f9:	e8 fc ff ff ff       	call   48fa <pktgen_thread_worker+0x5c3>
>     48fe:	e8 fc ff ff ff       	call   48ff <pktgen_thread_worker+0x5c8>
>     4903:	83 ae c4 02 00 00 01 	subl   $0x1,0x2c4(%esi)
>     490a:	e9 54 fe ff ff       	jmp    4763 <pktgen_thread_worker+0x42c>
>     490f:	c7 86 c8 02 00 00 00 	movl   $0x0,0x2c8(%esi)
>     4916:	00 00 00 
>     4919:	0f 31                	rdtsc  
>     491b:	89 44 24 0c          	mov    %eax,0xc(%esp)
>     491f:	89 54 24 10          	mov    %edx,0x10(%esp)
>     4923:	85 d2                	test   %edx,%edx
>     4925:	8b 1d 1c 00 00 00    	mov    0x1c,%ebx
>     492b:	89 d1                	mov    %edx,%ecx
>     492d:	89 c5                	mov    %eax,%ebp
>     492f:	74 08                	je     4939 <pktgen_thread_worker+0x602>
>     4931:	89 d0                	mov    %edx,%eax
>     4933:	31 d2                	xor    %edx,%edx
>     4935:	f7 f3                	div    %ebx
>     4937:	89 c1                	mov    %eax,%ecx
>     4939:	89 e8                	mov    %ebp,%eax
>     493b:	f7 f3                	div    %ebx
>     493d:	89 ca                	mov    %ecx,%edx
>     493f:	89 86 b4 02 00 00    	mov    %eax,0x2b4(%esi)
>     4945:	89 96 b8 02 00 00    	mov    %edx,0x2b8(%esi)
>     494b:	e9 00 fd ff ff       	jmp    4650 <pktgen_thread_worker+0x319>
>     4950:	8b 44 24 28          	mov    0x28(%esp),%eax
>     4954:	e8 21 f9 ff ff       	call   427a <pktgen_rem_all_ifs>
>     4959:	8b 44 24 28          	mov    0x28(%esp),%eax
>     495d:	83 a0 b4 02 00 00 f7 	andl   $0xfffffff7,0x2b4(%eax)
>     4964:	e9 6d fe ff ff       	jmp    47d6 <pktgen_thread_worker+0x49f>
>     4969:	8b 44 24 28          	mov    0x28(%esp),%eax
>     496d:	e8 d7 f2 ff ff       	call   3c49 <pktgen_run>
>     4972:	8b 4c 24 28          	mov    0x28(%esp),%ecx
>     4976:	8b 91 b4 02 00 00    	mov    0x2b4(%ecx),%edx
>     497c:	83 e2 fb             	and    $0xfffffffb,%edx
>     497f:	89 91 b4 02 00 00    	mov    %edx,0x2b4(%ecx)
>     4985:	e9 42 fe ff ff       	jmp    47cc <pktgen_thread_worker+0x495>
>     498a:	8b 44 24 28          	mov    0x28(%esp),%eax
>     498e:	e8 a9 f8 ff ff       	call   423c <pktgen_stop>
>     4993:	8b 44 24 28          	mov    0x28(%esp),%eax
>     4997:	8b 90 b4 02 00 00    	mov    0x2b4(%eax),%edx
>     499d:	83 e2 fd             	and    $0xfffffffd,%edx
>     49a0:	89 90 b4 02 00 00    	mov    %edx,0x2b4(%eax)
>     49a6:	e9 18 fe ff ff       	jmp    47c3 <pktgen_thread_worker+0x48c>
>     49ab:	e8 fc ff ff ff       	call   49ac <pktgen_thread_worker+0x675>
>     49b0:	e9 da fd ff ff       	jmp    478f <pktgen_thread_worker+0x458>
>     49b5:	89 f2                	mov    %esi,%edx
>     49b7:	89 f8                	mov    %edi,%eax
>     49b9:	e8 cc de ff ff       	call   288a <nanospin>
>     49be:	89 f6                	mov    %esi,%esi
>     49c0:	e9 19 fb ff ff       	jmp    44de <pktgen_thread_worker+0x1a7>
>     49c5:	0f 31                	rdtsc  
>     49c7:	85 d2                	test   %edx,%edx
>     49c9:	8b 1d 1c 00 00 00    	mov    0x1c,%ebx
>     49cf:	89 d1                	mov    %edx,%ecx
>     49d1:	89 c7                	mov    %eax,%edi
>     49d3:	74 08                	je     49dd <pktgen_thread_worker+0x6a6>
>     49d5:	89 d0                	mov    %edx,%eax
>     49d7:	31 d2                	xor    %edx,%edx
>     49d9:	f7 f3                	div    %ebx
>     49db:	89 c1                	mov    %eax,%ecx
>     49dd:	89 f8                	mov    %edi,%eax
>     49df:	f7 f3                	div    %ebx
>     49e1:	89 ca                	mov    %ecx,%edx
>     49e3:	89 c1                	mov    %eax,%ecx
>     49e5:	89 d3                	mov    %edx,%ebx
>     49e7:	81 c1 ff ff ff 7f    	add    $0x7fffffff,%ecx
>     49ed:	83 d3 00             	adc    $0x0,%ebx
>     49f0:	e9 62 fd ff ff       	jmp    4757 <pktgen_thread_worker+0x420>
>     49f5:	e8 fc ff ff ff       	call   49f6 <pktgen_thread_worker+0x6bf>
>     49fa:	e9 15 fd ff ff       	jmp    4714 <pktgen_thread_worker+0x3dd>
>     49ff:	83 f8 ff             	cmp    $0xffffffff,%eax
>     4a02:	75 14                	jne    4a18 <pktgen_thread_worker+0x6e1>
>     4a04:	8b 4c 24 14          	mov    0x14(%esp),%ecx
>     4a08:	f6 81 59 01 00 00 10 	testb  $0x10,0x159(%ecx)
>     4a0f:	74 07                	je     4a18 <pktgen_thread_worker+0x6e1>
>     4a11:	f3 90                	pause  
>     4a13:	e9 98 fb ff ff       	jmp    45b0 <pktgen_thread_worker+0x279>
>     4a18:	8b 86 40 04 00 00    	mov    0x440(%esi),%eax
>     4a1e:	f0 ff 88 94 00 00 00 	lock decl 0x94(%eax)
>     4a25:	8b 2d 08 00 00 00    	mov    0x8,%ebp
>     4a2b:	85 ed                	test   %ebp,%ebp
>     4a2d:	75 4f                	jne    4a7e <pktgen_thread_worker+0x747>
>     4a2f:	83 86 ac 02 00 00 01 	addl   $0x1,0x2ac(%esi)
>     4a36:	c7 86 c8 02 00 00 00 	movl   $0x0,0x2c8(%esi)
>     4a3d:	00 00 00 
>     4a40:	83 96 b0 02 00 00 00 	adcl   $0x0,0x2b0(%esi)
>     4a47:	0f 31                	rdtsc  
>     4a49:	89 44 24 0c          	mov    %eax,0xc(%esp)
>     4a4d:	89 54 24 10          	mov    %edx,0x10(%esp)
>     4a51:	85 d2                	test   %edx,%edx
>     4a53:	8b 1d 1c 00 00 00    	mov    0x1c,%ebx
>     4a59:	89 d1                	mov    %edx,%ecx
>     4a5b:	89 c5                	mov    %eax,%ebp
>     4a5d:	74 08                	je     4a67 <pktgen_thread_worker+0x730>
>     4a5f:	89 d0                	mov    %edx,%eax
>     4a61:	31 d2                	xor    %edx,%edx
>     4a63:	f7 f3                	div    %ebx
>     4a65:	89 c1                	mov    %eax,%ecx
>     4a67:	89 e8                	mov    %ebp,%eax
>     4a69:	f7 f3                	div    %ebx
>     4a6b:	89 ca                	mov    %ecx,%edx
>     4a6d:	89 86 b4 02 00 00    	mov    %eax,0x2b4(%esi)
>     4a73:	89 96 b8 02 00 00    	mov    %edx,0x2b8(%esi)
>     4a79:	e9 80 fb ff ff       	jmp    45fe <pktgen_thread_worker+0x2c7>
>     4a7e:	e8 fc ff ff ff       	call   4a7f <pktgen_thread_worker+0x748>
>     4a83:	85 c0                	test   %eax,%eax
>     4a85:	74 a8                	je     4a2f <pktgen_thread_worker+0x6f8>
>     4a87:	c7 04 24 e9 06 00 00 	movl   $0x6e9,(%esp)
>     4a8e:	e8 fc ff ff ff       	call   4a8f <pktgen_thread_worker+0x758>
>     4a93:	eb 9a                	jmp    4a2f <pktgen_thread_worker+0x6f8>
> 

-- 
Pádraig Brady - http://www.pixelbeat.org
--