Bot releases are visible (Hide)
v2.6是libgo的针对HTTP优化的版本,用于类似于HTTP这种半双工协议的场景下,性能相比上一个版本提升100%
Published by yyzybb537 over 8 years ago
v2.4-stable是libgo的第一个稳定版,经过了线上环境的大规模考验,也修复了很多线上测试过程中发现的bug。
目前有200多台linux服务器、600多个进程基于此版本7×24小时地运行着。
1.删除ENABLE_SHARED_STACK选项
2.多线程调度算法采用work-steal, 可以通过设置关闭
3.优化切换速度, 每秒切换次数达到千万级
4.增加go_dispatch, 创建协程时可以指定执行的线程
1.增加一个栈内存malloc/free函数自定义的机制, 用户可以基于此做内存池优化、调试代码嵌入等事情.
2.修复协程function对象的析构在协程外执行的bug
1.每个线程各使用一个epoll
1.定时器根据设置定时的参数不同, 使用system(受系统时间影响)和steady(不受系统时间影响)两种计时方式.
system_clock::time_point使用system计时
steady_clock::time_point和duration使用steady计时
Published by yyzybb537 over 8 years ago
1.重构IO层的Hook代码,通过跟踪socket状态的方式优化掉额外的系统调用,IO性能再次提升30%左右
2.支持共享监听端口的多进程服务器的使用方式
3.增加一个接口set_connect_timeout, 可以设置connect的超时时间. 弥补原生syscall不能设置connect超时时间的缺憾.
Published by yyzybb537 over 8 years ago
1.重新设计runnable列表的数据结构, 降低processer抓取coroutine的竞争
2.协程栈改为在创建协程时立即创建(ENABLE_SHARED_STACK模式除外)
3.重新设计delete列表的结构, 降低多线程竞争
4.重写bm.cpp性能测试代码
1.travis-ci上增加两个版本的自动测试: ENABLE_BOOST_COROUTINE ENABLE_SHARED_STACK
2.持续集成测试环境改为Ubuntu14.04
Published by yyzybb537 over 8 years ago
使用方法:
go_stack(102400) foo;
Published by yyzybb537 over 8 years ago
支持Win7、Win8、Win10的x86和x64版本
ENABLE_BOOST_COROUTINE
libgo在Linux系统上默认使用ucontext做协程上下文切换,开启此选项将使用boost.coroutine来替代ucontext.
使用方式:
$ cmake .. -DENABLE_BOOST_COROUTINE=1
ENABLE_SHARED_STACK
使用ucontext做协程上下文切换时可以开启此选项,开启后多个协程将共享使用同一个栈,
这个选项可以大概节约4倍的内存.
但是会有一定的副作用,参见下面的WARNNING第四条.
在使用ENABLE_BOOST_COROUTINE选项时, 此选项不可开启
使用方式:
$ cmake .. -DENABLE_SHARED_STACK=1
DISABLE_HOOK
禁止hook syscall,开启此选项后,网络io相关的syscall将恢复系统默认的行为,
协程中使用阻塞式网络io将可能真正阻塞线程,如无特殊需求请勿开启此选项.
使用方式:
$ cmake .. -DDISABLE_HOOK=1
默认编译参数下不再有协程栈上对象访问权限的限制
libgo的源码、单元测试代码、性能测试代码全部使用CMake来构建
使用travis做持续集成、自动测试,保障代码可用性