从z/OS 1.2开始,引入了一个新的探索式(heuristic)的算法,它以获得更有效的主机(CF请求发送者)CPU利用率为目标,来决定是向CF发送同步请求还是异步请求。
[@more@]1.CF同步请求和异步请求的差异
从CF的角度来看,CF异步请求通常比同步请求的处理时间(service time)更长,需要更多的CF CPU开销。
从主机(CF请求发送者)CPU的角度来看,CF同步请求和异步请求具有以下差异:
同步:z/OS通过XCF经CF link向CF发送同步请求,然后开始spin/wait主机CPU,这一过程一直消耗CPU时间,不执行其他工作只等待请求返回。当CF请求处理完成并返回时,继续请求发送者的程序处理。主机CPU spin的开销和CF响应时间(service time)成线性比例关系。
异步:z/OS通过XCF经CF link向CF发送异步请求,然后分派其他工作到主机CPU,并把主机CPU切换到该项工作上。当CF请求处理完成并返回时,必须先等待CPU完成当前的工作,才能处理CF请求的返回,再继续请求发送者的程序处理。这一过程中虽然没有主机CPU spin,但是工作切换、调度等仍然需要消耗一定的CPU。主机CPU对于CF异步请求的开销,可以近似认为不变。
正因为这样,同步请求时主机CPU spin的开销可能比异步请求时工作调度/切换的开销更大,特别是现在主机CPU越来越快的情况下,单位时间能提供的SU越多,spin会浪费更多的SU。同样的,如果CF请求的响应时间越长,spin也会浪费更多的SU。通过heuristic算法,更有可能会采取异步请求的方式。
2.Heuristic算法原理
算法的重点是z/OS需要根据主机CPU配置、CF link配置、CF CPU配置、工作负载的类型、距离延时等影响因素,针对不同的CF请求类型(比如lock,list,cache,是否duplex等),指出同步请求和异步请求转换的临界点或阈值。Heuristic算法则构建一个表格,每一行代表不同的CF请求类型,以及与它对应的同步请求响应时间。这个响应时间是通过对不同类型的同步请求进行周期性的观测得出的,是一个动态变化的加权并均值。当每个CF请求需要处理时,首先把它划归为某种类型,然后以这种类型的动态加权平均值和转换临界点进行比较,以确定是否把该请求转换为异步处理。
2009.02.13
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/45793/viewspace-1017334/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/45793/viewspace-1017334/