Github user revans2 commented on the issue: https://github.com/apache/storm/pull/2203 Here are my numbers, and no I didn't do it headless but I was not doing anything on the laptop at the time it was running except looking at Activity Monitor to be sure nothing else was using too much CPU. The setup is MacBook Pro (Retina, 15-inch, Mid 2015) 2.8 GHz Intel Core i7 16 GB 1600 MHz DDR3 macOS 10.12.6 java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode) The versions tested are 1.2.0-SNAPSHOT (b24f5d87cbcd4faeed651e45a8e673db52469a46) Metrics V2 (78d3de44cf0705efd199fb64b7ef092e23c3285b) which is 1.2.0-SNAPSHOT + 99bcf68 merged in. The Numbers: 1.2.0-SNAPSHOT ``` ./bin/storm jar ../../../examples/storm-starter/target/storm-starter-1.2.0-SNAPSHOT.jar org.apache.storm.starter.ThroughputVsLatency 50000 1 3 -c topology.max.spout.pending=500 uptime: 30 acked: 602,660 acked/sec: 20,088.67 failed: 0 99%: 741,343,231 99.9%: 757,596,159 min: 3,639,296 max: 768,081,919 mean: 95,373,435.91 stddev: 191,784,964.85 user: 71,070 sys: 4,565 gc: 247 mem: 109.46 uptime: 60 acked: 1,504,480 acked/sec: 50,149.33 failed: 0 99%: 13,320,191 99.9%: 15,794,175 min: 3,467,264 max: 30,490,623 mean: 9,679,685.54 stddev: 1,394,068.49 user: 72,565 sys: 6,299 gc: 728 mem: 43.30 uptime: 90 acked: 1,510,500 acked/sec: 50,350.00 failed: 0 99%: 13,279,231 99.9%: 14,704,639 min: 3,352,576 max: 17,612,799 mean: 9,650,125.87 stddev: 1,358,879.30 user: 72,788 sys: 6,360 gc: 732 mem: 73.51 uptime: 120 acked: 1,503,720 acked/sec: 50,124.00 failed: 0 99%: 13,352,959 99.9%: 14,745,599 min: 3,356,672 max: 16,973,823 mean: 9,683,344.13 stddev: 1,361,582.42 user: 72,855 sys: 6,239 gc: 740 mem: 101.27 uptime: 150 acked: 1,654,820 acked/sec: 55,160.67 failed: 0 99%: 13,369,343 99.9%: 14,811,135 min: 3,473,408 max: 16,736,255 mean: 9,695,874.65 stddev: 1,363,167.65 user: 72,671 sys: 6,327 gc: 741 mem: 127.25 uptime: 180 acked: 1,503,740 acked/sec: 50,124.67 failed: 0 99%: 13,377,535 99.9%: 14,811,135 min: 3,448,832 max: 17,711,103 mean: 9,682,345.18 stddev: 1,370,041.64 user: 72,848 sys: 6,280 gc: 756 mem: 41.83 ./bin/storm jar ../../../examples/storm-starter/target/storm-starter-1.2.0-SNAPSHOT.jar org.apache.storm.starter.ThroughputVsLatency 75000 1 3 -c topology.max.spout.pending=500 uptime: 30 acked: 882,420 acked/sec: 29,414.00 failed: 0 99%: 746,586,111 99.9%: 763,363,327 min: 3,678,208 max: 768,081,919 mean: 202,478,108.44 stddev: 266,947,569.24 user: 50,763 sys: 2,752 gc: 0 mem: 38.93 uptime: 60 acked: 2,497,720 acked/sec: 83,257.33 failed: 0 99%: 213,123,071 99.9%: 256,245,759 min: 3,672,064 max: 271,581,183 mean: 46,314,967.38 stddev: 51,559,780.69 user: 118,361 sys: 7,777 gc: 1,322 mem: 85.28 uptime: 90 acked: 2,260,200 acked/sec: 75,340.00 failed: 0 99%: 129,826,815 99.9%: 152,698,879 min: 3,659,776 max: 160,432,127 mean: 29,179,878.90 stddev: 29,586,943.44 user: 110,350 sys: 7,583 gc: 1,323 mem: 30.47 uptime: 120 acked: 2,255,680 acked/sec: 75,189.33 failed: 0 99%: 148,504,575 99.9%: 179,306,495 min: 3,700,736 max: 187,301,887 mean: 16,040,979.89 stddev: 23,589,666.52 user: 103,839 sys: 7,031 gc: 1,174 mem: 51.50 uptime: 150 acked: 2,255,180 acked/sec: 75,172.67 failed: 0 99%: 81,002,495 99.9%: 117,309,439 min: 3,571,712 max: 123,994,111 mean: 10,956,757.98 stddev: 11,465,433.32 user: 100,497 sys: 6,960 gc: 1,136 mem: 90.77 uptime: 180 acked: 2,256,380 acked/sec: 75,212.67 failed: 0 99%: 35,192,831 99.9%: 49,446,911 min: 3,608,576 max: 55,672,831 mean: 9,647,021.99 stddev: 4,081,135.34 user: 100,516 sys: 6,771 gc: 1,141 mem: 110.73 ./bin/storm jar ../../../examples/storm-starter/target/storm-starter-1.2.0-SNAPSHOT.jar org.apache.storm.starter.ThroughputVsLatency 100000 1 3 -c topology.max.spout.pending=500 uptime: 30 acked: 1,023,620 acked/sec: 34,120.67 failed: 0 99%: 1,427,111,935 99.9%: 1,442,840,575 min: 141,033,472 max: 1,448,083,455 mean: 1,205,785,740.36 stddev: 167,013,014.66 user: 56,266 sys: 2,615 gc: 0 mem: 53.83 uptime: 60 acked: 2,820,000 acked/sec: 94,000.00 failed: 0 99%: 4,177,526,783 99.9%: 4,320,133,119 min: 1,091,567,616 max: 4,353,687,551 mean: 2,617,160,518.91 stddev: 618,922,278.84 user: 127,359 sys: 7,415 gc: 1,565 mem: 88.42 uptime: 90 acked: 2,665,280 acked/sec: 88,842.67 failed: 0 99%: 7,541,358,591 99.9%: 7,918,845,951 min: 2,944,401,408 max: 7,948,206,079 mean: 4,756,939,536.76 stddev: 1,117,314,866.53 user: 128,113 sys: 7,796 gc: 1,593 mem: 115.03 uptime: 120 acked: 2,919,360 acked/sec: 97,312.00 failed: 0 99%: 12,683,575,295 99.9%: 12,784,238,591 min: 5,440,012,288 max: 12,792,627,199 mean: 9,308,123,106.98 stddev: 1,615,564,564.30 user: 121,475 sys: 7,534 gc: 1,567 mem: 47.30 uptime: 150 acked: 2,877,200 acked/sec: 95,906.67 failed: 0 99%: 14,646,509,567 99.9%: 14,763,950,079 min: 9,302,966,272 max: 14,789,115,903 mean: 11,379,620,943.33 stddev: 1,593,183,614.74 user: 133,995 sys: 7,393 gc: 1,616 mem: 133.84 uptime: 181 acked: 2,859,340 acked/sec: 92,236.77 failed: 0 99%: 16,366,174,207 99.9%: 16,424,894,463 min: 10,116,661,248 max: 16,450,060,287 mean: 12,700,704,569.76 stddev: 2,014,006,250.70 user: 129,856 sys: 7,147 gc: 1,592 mem: 90.25 ``` Metrics V2: ``` ./bin/storm jar ../../../examples/storm-starter/target/storm-starter-1.2.0-SNAPSHOT.jar org.apache.storm.starter.ThroughputVsLatency 50000 1 3 -c topology.max.spout.pending=500 uptime: 30 acked: 751,560 acked/sec: 25,052.00 failed: 0 99%: 499,908,607 99.9%: 505,675,775 min: 4,108,288 max: 509,870,079 mean: 107,075,292.72 stddev: 173,303,090.76 user: 47,136 sys: 2,570 gc: 0 mem: 65.99 uptime: 60 acked: 1,505,040 acked/sec: 50,168.00 failed: 0 99%: 86,835,199 99.9%: 127,336,447 min: 3,575,808 max: 134,873,087 mean: 11,308,860.12 stddev: 11,073,472.42 user: 87,512 sys: 6,176 gc: 763 mem: 67.76 uptime: 90 acked: 1,503,580 acked/sec: 50,119.33 failed: 0 99%: 13,901,823 99.9%: 15,450,111 min: 3,684,352 max: 18,726,911 mean: 9,930,800.24 stddev: 1,361,960.54 user: 86,289 sys: 6,234 gc: 768 mem: 93.17 uptime: 120 acked: 1,504,200 acked/sec: 50,140.00 failed: 0 99%: 39,190,527 99.9%: 92,864,511 min: 3,645,440 max: 100,859,903 mean: 10,615,784.00 stddev: 6,838,619.84 user: 86,522 sys: 6,275 gc: 787 mem: 114.78 uptime: 150 acked: 1,503,880 acked/sec: 50,129.33 failed: 0 99%: 13,885,439 99.9%: 15,302,655 min: 3,964,928 max: 19,693,567 mean: 9,949,763.37 stddev: 1,350,149.76 user: 86,026 sys: 6,226 gc: 789 mem: 136.70 uptime: 180 acked: 1,503,840 acked/sec: 50,128.00 failed: 0 99%: 13,967,359 99.9%: 15,515,647 min: 3,670,016 max: 19,316,735 mean: 9,921,255.02 stddev: 1,380,147.00 user: 85,840 sys: 6,307 gc: 814 mem: 61.50 ./bin/storm jar ../../../examples/storm-starter/target/storm-starter-1.2.0-SNAPSHOT.jar org.apache.storm.starter.ThroughputVsLatency 75000 1 3 -c topology.max.spout.pending=500 uptime: 30 acked: 810,700 acked/sec: 27,023.33 failed: 0 99%: 1,469,054,975 99.9%: 1,484,783,615 min: 110,428,160 max: 1,490,026,495 mean: 1,103,688,559.63 stddev: 218,353,127.14 user: 59,994 sys: 2,680 gc: 0 mem: 110.42 uptime: 60 acked: 1,580,040 acked/sec: 52,668.00 failed: 0 99%: 2,017,460,223 99.9%: 2,138,046,463 min: 305,135,616 max: 2,151,677,951 mean: 1,271,180,309.48 stddev: 349,131,056.74 user: 130,862 sys: 7,058 gc: 1,521 mem: 80.61 uptime: 90 acked: 2,279,900 acked/sec: 75,996.67 failed: 0 99%: 2,208,301,055 99.9%: 2,262,827,007 min: 13,189,120 max: 2,271,215,615 mean: 876,751,968.81 stddev: 666,332,632.22 user: 128,889 sys: 7,008 gc: 1,531 mem: 69.38 uptime: 120 acked: 2,305,340 acked/sec: 76,844.67 failed: 0 99%: 2,138,046,463 99.9%: 2,298,478,591 min: 4,882,432 max: 2,317,352,959 mean: 440,761,887.25 stddev: 592,545,096.04 user: 130,032 sys: 6,988 gc: 1,491 mem: 84.19 uptime: 151 acked: 2,277,980 acked/sec: 73,483.23 failed: 0 99%: 60,391,423 99.9%: 72,155,135 min: 3,788,800 max: 80,216,063 mean: 21,421,869.58 stddev: 13,674,045.52 user: 123,179 sys: 6,837 gc: 1,367 mem: 128.93 uptime: 181 acked: 2,254,200 acked/sec: 75,140.00 failed: 0 99%: 214,433,791 99.9%: 238,551,039 min: 4,816,896 max: 247,332,863 mean: 52,724,728.68 stddev: 43,440,715.92 user: 124,503 sys: 6,916 gc: 1,454 mem: 46.17 ./bin/storm jar ../../../examples/storm-starter/target/storm-starter-1.2.0-SNAPSHOT.jar org.apache.storm.starter.ThroughputVsLatency 100000 1 3 -c topology.max.spout.pending=500 uptime: 30 acked: 1,123,900 acked/sec: 37,463.33 failed: 0 99%: 2,592,079,871 99.9%: 2,600,468,479 min: 73,465,856 max: 2,652,897,279 mean: 1,690,311,396.11 stddev: 480,273,985.78 user: 57,811 sys: 2,666 gc: 0 mem: 61.51 uptime: 60 acked: 2,262,680 acked/sec: 75,422.67 failed: 0 99%: 10,208,935,935 99.9%: 10,536,091,647 min: 2,415,919,104 max: 10,594,811,903 mean: 6,285,873,303.48 stddev: 2,142,972,667.99 user: 127,730 sys: 6,723 gc: 1,482 mem: 117.42 uptime: 90 acked: 2,313,860 acked/sec: 77,128.67 failed: 0 99%: 17,834,180,607 99.9%: 18,052,284,415 min: 9,596,567,552 max: 18,102,616,063 mean: 13,442,454,586.16 stddev: 1,991,956,204.06 user: 131,847 sys: 7,115 gc: 1,534 mem: 70.55 uptime: 120 acked: 2,334,940 acked/sec: 77,831.33 failed: 0 99%: 24,964,497,407 99.9%: 25,316,818,943 min: 16,315,842,560 max: 25,350,373,375 mean: 20,534,292,592.51 stddev: 2,142,432,639.60 user: 130,283 sys: 6,860 gc: 1,499 mem: 73.80 uptime: 150 acked: 2,355,160 acked/sec: 78,505.33 failed: 0 99%: 32,061,259,775 99.9%: 32,413,581,311 min: 22,749,904,896 max: 32,463,912,959 mean: 27,008,051,127.76 stddev: 2,183,882,755.64 user: 129,694 sys: 6,936 gc: 1,496 mem: 68.42 uptime: 180 acked: 2,346,800 acked/sec: 78,226.67 failed: 0 99%: 38,889,586,687 99.9%: 39,258,685,439 min: 29,024,583,680 max: 39,292,239,871 mean: 33,518,848,499.25 stddev: 2,297,910,092.43 user: 131,058 sys: 6,849 gc: 1,514 mem: 71.15 ``` At 50,000 sentences per second on a single worker both can keep up, but the mean latency appears to be about 200 to 300 microseconds slower 9.6 ms vs 9.9 ms. The bigger issue in my mind is the CPU time as it went up from about 79 seconds (max 30 second period) every 30 seconds to 92 seconds (min 30 second period after stabilizing). That was at least a 16% increase in CPU usage. At 75,000 sentences per second metrics v2 was just able to keep up with that throughput while 1.2.0-SNAPSHOT could handle it easily. I will not compare the latency because metrics v2 didn't stabilize enough for me to feel good reporting the numbers, but the CPU time went up from 118 seconds every 30 seconds to 130 seconds. That was an increase of at least 9%. When I tried to do 100,000 sentences per second neither of the two could keep up, but 1.2.0-SNAPSHOT hit a maximum of 97k while metrics V2 hit a maximum of 78k or 20% less maximum throughput. Only here did we see the CPU usage be lower for metrics V2 with 134 seconds vs 141 for 1.2.0-SNAPSHOT, but if we take into account the actual throughput and look at CPU seconds needed to process 1k sentences per second it is 1.7 for metrics v2 vs 1.5 for 1.2.0-SNAPSHOT. If you need me to run the numbers again on different hardware I can, but it may take me some more time to get access to bare metal as I find VMs produce less reliable numbers than my laptop does. I am not saying that these changes are a blocker for the code going in, but I really want to understand what is happening here
---