既然有人把老贴顶起来了, 我就再多啰嗦两句, 望Robert_Su网开一页.
首先, I/O是指input/output,是指用于基本输入输出的交换文件大小, 如果内存了不够的话, 这个文件是放在硬盘上的, 如果内存足够大的话, 这个文件则会由ABAQUS进行任务调度放入内存以提高速度, 即设定内存使用量的百分比. 这个不是指所需的内存量, 而是作为一个控制磁盘剩余空间的参数.
其次, 关于缓存大了是不是一定好的问题, 缓存是一个磁盘文件的部分或全部镜像, CPU要得到数据首先是通过查找其内部的高速缓存, 或叫一级缓存, 如果没有, 再查找二级, 还没有再查找内存中的磁盘缓存, 还没有就查找磁盘文件, 一部级数越高, 其缓存物理速度越快, 空间也越小, 价格也高, 所以系统分级缓存是一个金字塔形的, 假如CPU在前三次都没找到, 第四次找磁盘空间才找到, 为什么不能直接找磁盘呢, 这样不是更节约时间? 问题就出在所有的缓存都是下一级缓存部分镜像上, 而且查找缓存也要用到一定的时间, 这种情况下, 磁盘文件在内存中的缓存就不是越大越好, 而是刚刚好最好, 小了会减小命中率, 大了会增加查找时间.
再次, 关于多CPU的问题, 操作系统在进行任务调度的时候会尽量安排互相之间没有资源冲突的线程分CPU进行计算, 最后再进行数据同步, 每个CPU和线程都占用独立的运行空间, 为了对公用的数据空间进行管理, 防止几个线程同时改变公共数据, 同步技术在这里被使用了, 跑得快的必须在某个点停下来等跑得慢的, 这样就造成了执行效率的下降, 但是保证了数据安全, 没有必错误的修改, 所以不可能出现一个CPU在进行每二步迭代了, 另一个CPU还是算第一步的情况, 特别是在std中很明显, 我曾经试过4CPU比2CPU计算会慢一点点的情况. 就是因为数据同步的问题. |