Solaris 动态跟踪指南

提交推理

可使用 commit() 函数提交推理。提交推理缓冲区时,其中的数据将被复制到主体缓冲区。如果指定的推理缓冲区中包含的数据多于主体缓冲区中的可用空间,则不会复制该数据,并将递增缓冲区的删除计数。如果已推理跟踪多个 CPU 中的缓冲区,则会立即复制要提交的 CPU 中的推理数据,而其他 CPU 中的推理数据将在 commit() 之后的某个时间复制。因此,从 commit() 开始在一个 CPU 中运行到数据从推理缓冲区复制到所有 CPU 中的主体缓冲区之间可能会经历一段时间。此时间肯定不长于清除速率指定的时间。有关更多详细信息,请参见推理选项和调整

在将每个 CPU 的推理缓冲区完全复制到相应的每个 CPU 的主体缓冲区之前,后续 speculation() 调用将不能使用要提交的推理缓冲区。类似地,提交缓冲区对 speculate() 的后续调用将默认被放弃,对 commit()discard() 的后续调用将默认失败。最后,包含 commit() 的子句不能包含数据记录操作,但是子句可能包含多个 commit() 调用来提交不相交的缓冲区。