Skip to content

Commit

Permalink
update profile result of readme
Browse files Browse the repository at this point in the history
  • Loading branch information
oldratlee committed Jan 6, 2014
1 parent 0504e81 commit 53e5df0
Showing 1 changed file with 38 additions and 39 deletions.
77 changes: 38 additions & 39 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -271,70 +271,69 @@ TPS & 压力测试

TPS结果如下:

`ThreadLocal`的TPS稳定在~29K
`ThreadLocal`的TPS稳定在~41K

```bash
......
tps: 29189
tps: 29587
tps: 28261
tps: 28919
tps: 42470
tps: 40940
tps: 41041
tps: 40408
tps: 40610
```

`MtContextThreadLocal`的TPS稳定在~25K
`MtContextThreadLocal`的TPS稳定在~40K

```bash
......
tps: 25200
tps: 25263
tps: 24876
tps: 24926
tps: 25005
tps: 40461
tps: 40101
tps: 39989
tps: 40684
tps: 41174
```

GC情况如下:
GC情况如下(1分钟输出一次)

`ThreadLocal`
`ThreadLocal`的每分钟GC时间是`5.3s`,FGC次数是`3.2`

```bash
S0 S1 E O P YGC YGCT FGC FGCT GCT
......
97.66 0.00 1.91 31.88 37.58 5550583 15453.930 271 2.798 15456.728
0.00 97.66 0.00 50.44 37.58 5553030 15459.746 271 2.798 15462.543
0.00 97.66 0.00 69.65 37.58 5555456 15466.223 271 2.798 15469.021
0.00 96.88 0.00 89.43 37.58 5557844 15473.175 271 2.798 15475.973
98.44 0.00 0.00 12.64 37.58 5560263 15479.334 272 2.818 15482.152
96.09 0.00 28.21 32.65 37.58 5562739 15484.480 272 2.818 15487.298
97.66 0.00 42.06 53.02 37.58 5565181 15490.219 272 2.818 15493.037
96.88 0.00 61.95 72.61 37.58 5567593 15496.748 272 2.818 15499.566
0.00 97.66 0.00 89.94 37.58 5570166 15503.949 272 2.818 15506.767
97.66 0.00 0.00 4.71 37.58 5573247 15511.135 273 2.829 15513.964
0.00 98.44 0.00 56.05 12.80 1618475 2992.339 1832 11.460 3003.799
98.44 0.00 0.00 78.17 12.80 1621320 2997.624 1835 11.478 3009.103
0.00 98.44 0.00 9.41 12.80 1624161 3002.918 1839 11.503 3014.421
0.00 98.44 0.00 33.97 12.80 1627023 3008.154 1842 11.522 3019.677
99.22 0.00 0.00 61.65 12.80 1629868 3013.414 1845 11.539 3024.952
98.44 0.00 0.00 86.04 12.80 1632722 3018.692 1848 11.558 3030.250
97.66 0.00 0.00 6.53 12.80 1635574 3023.972 1852 11.584 3035.556
0.00 99.22 0.00 31.80 12.80 1638420 3029.170 1855 11.602 3040.772
98.44 0.00 0.00 57.71 12.80 1641264 3034.396 1858 11.620 3046.016
98.44 0.00 47.01 87.14 12.80 1644112 3039.750 1861 11.640 3051.390
```

`MtContextThreadLocal`
`MtContextThreadLocal`的每分钟GC时间是`6.1s`,FGC次数是`1.9`

```bash
S0 S1 E O P YGC YGCT FGC FGCT GCT
......
97.66 0.00 66.99 34.22 38.76 4306321 14418.315 2840 38.798 14457.113
98.44 0.00 30.83 41.82 38.76 4306423 14418.676 2840 38.798 14457.474
97.66 0.00 91.83 49.23 38.76 4306521 14419.040 2840 38.798 14457.838
0.00 99.22 30.41 56.47 38.76 4306618 14419.412 2840 38.798 14458.210
0.00 97.66 68.25 63.40 38.76 4306710 14419.812 2840 38.798 14458.610
97.66 0.00 2.01 70.35 38.76 4306801 14420.217 2840 38.798 14459.015
98.44 0.00 46.48 76.98 38.76 4306889 14420.648 2840 38.798 14459.446
98.44 0.00 96.90 83.53 38.81 4306976 14421.029 2840 38.798 14459.827
98.44 0.00 96.39 89.17 51.01 4307049 14421.406 2840 38.798 14460.204
98.44 0.00 96.44 89.17 51.02 4307049 14421.406 2840 38.798 14460.204
97.66 0.00 0.00 68.93 39.45 15868119 29941.292 4835 60.443 30001.735
0.00 97.66 0.00 52.32 39.45 15871026 29947.397 4837 60.465 30007.861
97.66 0.00 0.00 38.89 39.45 15873933 29953.457 4839 60.495 30013.952
97.66 0.00 35.02 19.23 39.45 15876831 29959.597 4841 60.516 30020.113
97.66 0.00 48.05 3.39 39.45 15879737 29965.802 4843 60.540 30026.342
0.00 97.66 0.00 85.81 39.45 15882634 29971.876 4844 60.551 30032.427
96.88 0.00 0.00 71.16 39.45 15885549 29977.966 4846 60.577 30038.543
0.00 98.44 0.00 54.86 39.45 15888454 29984.024 4848 60.604 30044.628
0.00 97.66 0.00 40.48 39.45 15891358 29990.090 4850 60.629 30050.719
96.88 0.00 0.00 24.39 39.45 15894265 29996.205 4852 60.651 30056.856
```

#### TPS下降的原因分析
#### TPS略有下降的原因分析

使用`jvisualvm` Profile方法耗时,`MtContextThreadLocal`的Case多了热点方法`MtContextThreadLocal.addMtContextThreadLocal`
使用`jvisualvm` Profile方法耗时,`MtContextThreadLocal`的Case热点方法和`ThreadLocal`一样

目前在这个方法中,判定是否在`MtContextThreadLocal.holder`已经记录了当前`MtContextThreadLocal`实例的方法是循环遍历`MtContextThreadLocal.holder`
方法`MtContextThreadLocal.addMtContextThreadLocal`是时间复杂度是`O(n)``n``MtContextThreadLocal.holder`中实例个数。
`MtContextThreadLocal`实例个数比较多时(TPS测试Case符合这个条件,不停在创建实例直到被垃圾回收),该方法成为热点。
略有下降可以认为是GC更多引起。

实际使用场景中,`MtContextThreadLocal`实例个数非常有限,不会有性能问题。

Expand Down

0 comments on commit 53e5df0

Please sign in to comment.