Oracle® Developer Studio 12.5:性能库用户指南

退出打印视图

更新时间: 2016 年 6 月
 
 

同步机制

POSIX/Oracle Solaris 线程模型的一个特性是,正在运行的应用程序的绑定线程在空闲时会让出 CPU,这样就能在共享(超额订阅)环境中获得较高的吞吐量和资源利用率。默认情况下,已由编译器并行化的代码中的绑定线程在空闲时会旋转等待,如果系统中有其他应用程序在争用 CPU 资源,这就会导致吞吐量不佳。在这种情况下,可使用环境变量 SUNW_MP_THR_IDLE 来控制线程在完成其并行作业份额后的行为:

my_host% setenv SUNW_MP_THR_IDLE value

在这里,value 可以是 spinsleep n ssleep n msspin 是默认值。

在旋转等待 n 个单位后,sleep 将线程置于休眠状态。等待单位可以是秒(s,默认单位),也可以是毫秒 (ms)。不带参数的 sleep 将在并行任务完成后立即将线程置于休眠状态。如果 SUNW_MP_THR_IDLE 包含非法值或未设置,则将 spin 用作默认值。

以下设置将分别使线程旋转等待(默认行为)、休眠之前旋转 2 秒,或休眠之前旋转 100 毫秒。使用 Oracle Developer Studio 性能库例程不会改变代码的旋转等待行为。

% setenv SUNW_MP_THR_IDLE spin
% setenv SUNW_MP_THR_IDLE 2s
% setenv SUNW_MP_THR_IDLE 100ms