OS X 与 Ubuntu 上的 Python asyncio 性能

标签 python macos ubuntu tcp python-asyncio

我在 OS X 上遇到 Python asyncio 性能问题。我有 Macbook pro 2015 和 16gb 内存。但无法在 OS X (El Capitan) 上获得与在 Ubuntu 上相同的性能。即使考虑到我在带有 OS X 主机的 VM(流浪者,4GB RAM)中运行 Ubuntu。

使用 wrk 的 OS X 基准测试: wrk -t8 -d 10s -c 300 http://127.0.0.1:9090 ⏎ 运行 10s 测试 @ http://127.0.0.1:9090 8 个线程和 300 个连接 线程统计 Avg Stdev Max +/- Stdev 延迟 628.63us 1.45ms 16.32ms 89.46% 请求/秒 696.05 834.65 5.51k 88.89% 10.08 秒内 19498 个请求,读取 361.78KB 套接字错误:连接 0,读取 20482,写入 0,超时 0 请求/秒:1934.40 传输/秒:35.89KB

Ubuntu:

wrk -t8 -d 10s -c 300 http://127.0.0.1:9090 运行 10s 测试 @ http://127.0.0.1:9090 8 个线程和 300 个连接 线程统计 Avg Stdev Max +/- Stdev 延迟 5.49ms 14.33ms 408.97ms 99.22% 请求/秒 3.58k 1.41k 8.42k 70.91% 10.06 秒内发出 204333 个请求,读取 3.70MB 套接字错误:连接 0,读取 3,写入 977,超时 0 请求/秒:20311.64 传输/秒:376.88KB

服务器代码:https://gist.github.com/ssbb/5f6c2c043880e0e917c3254d06c52a7e

ulimit -a 在 Ubuntu 上:https://gist.github.com/ssbb/e468b3ede5470da25699e4da4506b77c

ulimit -a 在 OS X 上:https://gist.github.com/ssbb/f2a846975069a1d62a313790ad8d26ce

sysctl -a 在 OS X 上:https://gist.github.com/ssbb/c78d5da7ae9e3670175f643309cf9f6b

sysctl -a 在 Ubuntu 上:https://gist.github.com/ssbb/9a00cc3856135369b16ddc0083d2bc88

为什么我对 Ubuntu/OS X 有如此大的区别。我还尝试在 Arch Linux(不是 VM,只是第二个操作系统)上运行这个服务器,结果与 OS X 相同。

Ubuntu 是否有一些针对 TCP 堆栈的“技巧”?

最佳答案

MacOSX 的网络堆栈实现比 linux 慢,这是众所周知的事实。

我不知道为什么 Arch Linux 在你的机器上比 Ubuntu 慢。网络栈是由linux内核本身实现的,相同内核版本的linux发行版应该表现出几乎相同的性能。

关于OS X 与 Ubuntu 上的 Python asyncio 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38858144/

相关文章:

python - 如何判断 libboost_python.so 使用的是什么 python 版本?

linux - 如何编写可以区分 Intel OS X 和 Linux 的 Makefile?

php - Ubuntu 命令行报告 PHP 版本为 5.3.3 但 phpinfo 显示为 5.5.9

ubuntu - .deb 安装期间的 Debconf 对话框

c++ - 在 mac osx(不是 dylib)上构建真正的 .so/MH_BUNDLE 共享库的 g++ 标志是什么?

ubuntu - 通过 python paramiko ssh session 执行 Wine 命令失败

python - 如果 'W' 在 'X' 中,则将 'Y' 附加到 'Z'

python - 使用具有不同值的多个相同字符串解析 Python JSON

python - 使用 pyvirtualcam 时出错 : 'NoneType' object has no attribute 'send'

Windows、Mac 和 Linux (Unix) 上的 Java 程序