如何衡量ASE中正在等待哪些用户进程

2020-09-11 01:01发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


使用sp_sysmon,我可以看到有关引擎正在执行或正在等待的各种操作(尽管在默认线程模式下,如果至少有一个I/O待处理,则所有空闲引擎都将显示为I/O忙。/O忙碌着望向高位(KBA 1863319)。

我还可以看到等待引擎的"可运行任务"的数量。 我认为,这不包括等待I/O的任务。 即,我对" Runnable"的理解是指线程在队列中等待CPU(er,Core)变得可以运行该线程。

但是我看不到有什么方法可以查看哪些用户线程正在等待磁盘I/O。 我想同样的问题也适用于等待网络I/O。

与"平均可运行任务"表示"等待CPU的平均线程数"相同,应该有"等待磁盘I/O的平均线程数"和"等待网络I的平均线程数"/O"?

这是此信息的详细即时快照,但与运行总计不同:

选择描述=子字符串(b.Description,1,60),proc_count =计数(*)
 来自monProcess a,monWaitEventInfo b
 其中a.WaitEventID = b.WaitEventID
 按子字符串分组(b.Description,1,60)按count(*)desc排序

  说明proc_count
  --------------------------------------------------  ---------- -----------
  等待传入的网络数据88
  xact coord:在空闲循环4中暂停
  等待消息3
  hk:暂停一段时间3
  等待常规缓冲区读取完成3
  进程正在运行2
  检查点进程空闲循环1
  睡眠后在运行队列中等待1
  等待客户端连接请求1
  等待下一个端口管理器请求1
  桶池管理器合并器睡眠1
  等到心跳或检查间隔到期1
  等待死锁检查配置更改1

 

我认为"等待传入的网络数据"实际上是一种空闲形式,而"等待常规缓冲区读取完成"则是在等待磁盘I/O。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


使用sp_sysmon,我可以看到有关引擎正在执行或正在等待的各种操作(尽管在默认线程模式下,如果至少有一个I/O待处理,则所有空闲引擎都将显示为I/O忙。/O忙碌着望向高位(KBA 1863319)。

我还可以看到等待引擎的"可运行任务"的数量。 我认为,这不包括等待I/O的任务。 即,我对" Runnable"的理解是指线程在队列中等待CPU(er,Core)变得可以运行该线程。

但是我看不到有什么方法可以查看哪些用户线程正在等待磁盘I/O。 我想同样的问题也适用于等待网络I/O。

与"平均可运行任务"表示"等待CPU的平均线程数"相同,应该有"等待磁盘I/O的平均线程数"和"等待网络I的平均线程数"/O"?

这是此信息的详细即时快照,但与运行总计不同:

选择描述=子字符串(b.Description,1,60),proc_count =计数(*)
 来自monProcess a,monWaitEventInfo b
 其中a.WaitEventID = b.WaitEventID
 按子字符串分组(b.Description,1,60)按count(*)desc排序

  说明proc_count
  --------------------------------------------------  ---------- -----------
  等待传入的网络数据88
  xact coord:在空闲循环4中暂停
  等待消息3
  hk:暂停一段时间3
  等待常规缓冲区读取完成3
  进程正在运行2
  检查点进程空闲循环1
  睡眠后在运行队列中等待1
  等待客户端连接请求1
  等待下一个端口管理器请求1
  桶池管理器合并器睡眠1
  等到心跳或检查间隔到期1
  等待死锁检查配置更改1

 

我认为"等待传入的网络数据"实际上是一种空闲形式,而"等待常规缓冲区读取完成"则是在等待磁盘I/O。

付费偷看设置
发送
6条回答
风早神人
1楼-- · 2020-09-11 01:21

我检查了monWaitClassinfo,发现以下与磁盘(读写)和网络(接收和发送)有关的类:

DISK

2等待磁盘读取完成

3等待磁盘写入完成

NETWORK

7等待来自网络的输入

8等待输出 连接到网络

因此,如果您等待带有WaitClassID 2和3的事件,则应该为您提供磁盘相关的统计信息

,并且类似地获取网络统计信息。 对于网络,我不会计算WaitEventID 250的统计信息。

HTH

Avinash

小灯塔
2楼-- · 2020-09-11 01:16

请注意,在磁盘I/O上方的sp_sysmon输出中,完成并 网络已完成的I/O不会总计为已完成的总I/O。 我不确定哪个是错误的。

jovirus
3楼-- · 2020-09-11 01:19

好吧,我想我找到了"如何衡量ASE中等待的用户进程?"的答案。 问题。

您可以使用以下命令:

 sp_sysmon 
 

例如,要查看在1分钟的采样中各个流程的工作情况:

 sp_sysmon" 00:01:00",appmgmt,appl_and_login
 

在显示sp_sysmon输出的常规"应用程序管理"部分之后,还会显示每个应用程序/登录信息,如下所示:

 ---------------------------------------------------  --------------------------------
   应用程序->登录名:my_app_name-> my_login_name
 
   每秒每应用程序的应用程序活动计数占总数的百分比
   ------------------------- ------------ -------------  ---------
     CPU繁忙0.1 0.1 1 0.4%
     I/O忙27.9 34.9 279 99.6%
     怠速0.0 0.0 0 0.0%
 
     预定的时间25.9 32.4 259不适用
 
   每秒钟每个应用程序的应用程序优先级变化数占总数的百分比
   ------------------------- ------------ -------------  --------- ----------
   总优先级更改0.0 0.0 0不适用
 
   每秒每个actact完成的应用程序I/O总数的百分比
   ------------------------- ------------ -------------  --------- ----------
     磁盘I/O完成0.5 0.6 5 1.0%
     网络I/O完成18.2 22.8 182 35.7%
   ------------------------- ------------ -------------  ---------
   完成的I/O总数51.0 63.8 510
 
   每秒违反xact计数的资源限制占总数的百分比
   ------------------------- ------------ -------------  --------- ----------
   违反总限值0.0 0.0 0不适用
 

看上面的示例,看起来I/O Busy包括磁盘I/O 和网络I/O。

文档将" I/O忙"定义为:

" I/O忙"报告用户任务执行期间的时钟滴答数
 在采样间隔内执行I/O。  

如果某个任务正在等待 完成I/O,那么该任务是否算作I/O忙?

粗暴的香蕉
4楼-- · 2020-09-11 01:24

Re:I/O 繁忙:是所有I/O(磁盘+网络)的CPU使用率

您对此有任何参考吗? 当前,在至少一个I/O等待完成的同时,新内核线程环境中的@@ io_busy对任何空闲CPU都有一个怪异的定义。 因此,如果您有8个内核处于空闲状态,并且有1个I/O待处理,则它将所有8个内核都计为io_busy。

Re:磁盘I/O和网络I/O不会总计到总I/O

我实际上与SAP发生了一起事件。 "总I/O"数不正确。 有一天要修复。 CR 818885

路亽曱_Ryan
5楼-- · 2020-09-11 01:24

您的初始问题与"等待"相关。

这一次,从MDA表提取的增量值最合适。

AFAIU: sysmon显示的是实际的"使用情况",而不是"等待"。

I/O忙:所有I/O(磁盘+网络)的CPU使用率是

您对磁盘的观察 I/O和网络I/O不会合计为总I/O是正确的。

SAP的某些人应该对此加以说明。

HTH

Avinash

悻福寶寶
6楼-- · 2020-09-11 01:20

我的评论/答案更多来自进程内核模式!

因此,线程内核模式下I/O(磁盘+网络)的CPU使用率是一个未知领域 到目前为止,还是我。

感谢您共享CR#,希望它可以同时解决这两种内核模式。

Avinash

一周热门 更多>