我已经重新编写了C语言代码的一部分。在使用getrusage(2) C API记录资源使用情况时进行测试。
更改代码之前:
user time (ms): 21503
system time (ms): 372
involuntary context switches: 20
更改后:
user time (ms): 25589
system time (ms): 80732
involuntary context switches: 821
我看到在我重写的代码中有很多“非自愿上下文切换”(involuntary context switches)。
我的问题不是关于如何减少上下文切换,而是:
1. 当“非自愿上下文切换”更多时会发生什么?
2. 它将以何种方式影响系统?
附注:磁盘上没有活动,因为没有写入任何内容。它只是多次ping服务器。
更新:
添加了系统和用户所花费的时间。
程序是多线程的。在两种情况下都生成了相同数量的线程(3k个线程)。只是C语言底层API被重新编写。