微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Sleep() 方法和操作系统 - 调度程序Camunda/Groovy

如何解决Sleep() 方法和操作系统 - 调度程序Camunda/Groovy

我有一个问题要问你们,但它不像往常那样具体,所以回答起来可能有点烦人。

我正在使用的工具是 Camunda 与 Groovy 脚本的结合,其目标是减少最大 cpu 负载(或峰值负载)。我通过在特定时间范围内“拉伸”工作负载来做到这一点,因为平台似乎对短时间内输入的大量工作负载不满意。由此产生的问题是,当有人试图在 UI - 级别操作时,Camunda 不会反应顺畅。

所以我写了一个小脚本,如果超过某个阈值,它基本上只是让每个进程在运行前确定自己的“睡眠时间”。这是基于有多少进程试图与单个进程同时运行。

看起来像:

进程要启动 -> 进程询问还有多少其他进程正在运行 -> waitingTime = numberOfProcesses * timetoSleep * iterationOfMeasures

CPU-Usage Curve 1,3 without the Script. Curve 2,4 With the script

测试它我发现我可以拉伸工作负载并平滑 UI - 级别。但现在我需要描述为什么这完全有效。

问题是:

  1. 睡眠方法究竟有什么作用?
  2. sleep 方法cpu - Level 有何作用?
  3. 操作系统调度程序如何对睡眠方法做出反应?
  4. 即:调度程序是重新安排还是只是“等待”给定的时间?
  5. 如何重新创建和测试上面给出的问题?

主要目标不是让你回答这个问题,但你能给我一个提示,让我找到合适的文献来回答这些问题吗?也许你记得一本帮助你理解这类事情的书,或者一位教授向你推荐了一些东西。 (我的不会回答,也不能怪他)

非常感谢您的提示和/或建议!

解决方法

我相信你可以使用计时器事件

https://docs.camunda.org/manual/7.15/reference/bpmn20/events/timer-events/

它允许将下一个任务触发器推迟一段时间由表达式定义。


关于 java/groovy 中的睡眠:https://www.javamex.com/tutorials/threads/sleep.shtml

使用 sleep 会阻塞 groovy/java/camunda 中的当前线程。

所以不是做一些有效的事情,而是被阻止。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。