线程的上下文开销真得那么厉害吗(2)?

      线程切换的开销的确是比较厉害的。这是从今天的实验中得出的结果。

      为了解决上次提出的疑问,今天在实验室做了一个试验,来测试线程的切换是否开销比较大。由于主要是为了比较线程的数目多少对性能的影响,所以,具体的测试环境就不提了,只要每次实验在同等的条件下即可。

      首先,在MQ的Server端启动100个读线程,100个写线程,100个消息deliver线程,客户端同时启动100个发送者,100个接收者,对4个queue进行不断发送1K大小的消息,测试结果为大约每秒可以发送&接收600个左右的消息。而此时客户端的cpu消耗大概在80%左右,服务器端的cpu消耗在100%,但是线程切换大概占了30%左右。也就是说,只有70%的cpu用于消息的处理。

     接着,在MQ的Server端启动10个读线程,10个写线程,10个消息deliver线程,客户端同时启动100个发送者,100个接收者,对4个queue进行不断发送1K大小的消息,测试结果为大约每秒可以发送&接收800个左右的消息。此时客户端的cpu消耗一般在90%以上,服务器端的cpu消耗在100%,而线程切换大概占了10%左右。也就是说,有90%的cpu用于消息的处理。

     随后,又对server端采用4个读写线程、消息deliver线程,以及20个,50个等不同线程数进行了测试,测试结果都没有优于10个线程数的情况。

    所以,可以得出结论,对于单cpu的情况,线程的切换的确会带来相当大的开销。今天的测试结果同时也表明了JTangMQ在100个发送者,100个接收者的情况下已经比JBossMQ每秒多发送&接收100个消息,而在400个发送者,400个接收者的情况下,发送速度比JBossMQ多出几十个,接收着少了几十个,总体性能已经相当。当然,在发送者&接收者数目较少的时候,性能明显优于JBossMQ。所以,接下来的目标是在多发送者&接收者的条件下,超过JBossMQ,做到性能的全部提升。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值