智能任务调度器

发布于 2024-12-25 20:52:30 字数 333 浏览 2 评论 0原文

有人知道有一个可以为任务创建最佳时间表的工具吗?我有许多服务器,运行多个数据库,并使用各种脚本在每个数据库之间导入和转换数据。

我目前正在手动安排各种 cronjobs,但这很容易出错并且很难解释异常情况,例如由于数据负载异常大而导致作业运行时间异常长。我正在考虑对每个任务之间的资源和依赖关系进行编码,并创建一个规划器来搜索任务执行的最佳顺序,以便每个任务在最不可能干扰任何其他任务的时间运行。

我见过 Drools Planner,但它并不合适,因为它非常复杂且开销巨大。

Is anyone aware of a tool for creating optimal schedules for tasks? I have numerous servers, running multiple databases, with various scripts that import and transform data to and from each database.

I'm currently scheduling the various cronjobs by hand, but this is error prone and difficult to account for exceptions, such as a job taking unusually long to run because of an unusually large data load. I'm considering encoding the resources and dependencies between each task, and creating a planner to search for an optimal sequence of task executions so each task is run at a time when it's least likely to interfere with any other tasks.

I've seen Drools Planner, but it's not appropriate due it's immense complexity and overhead.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

毁梦 2025-01-01 20:52:30

它是NP 完全,因此如果您想要接近最佳的效果,则无法避免一定程度的复杂性和 CPU 开销。

在我看来,你有两个选择:

  • 采用快速构造启发式,例如首次适应递减:按难度递减对任务进行排序(=它们冲突的任务数量,... )并按顺序将它们分配到剩余的最佳位置。这不会接近最佳,但它将快速、简单且开销低。

  • 进行实时规划.

出于兴趣,Planner 中的哪些复杂性让您感到害怕?

It's NP complete, so if you want anything near optimal, you can't avoid a certain amount of complexity and CPU overhead.

As I see it you got 2 choices:

  • Go for a quick construction heuristic such as First Fit Decreasing: Sort the tasks on decreasing difficulty (= the number of task they collide with, ...) and in that order, assign them to the best remaining spot. This will not be near optimal, but it will be fast, simple and with low overhead.

  • Go for real-time planning.

Out of interest, what complexity in Planner scared you away?

帅的被狗咬 2025-01-01 20:52:30

任务调度问题属于NP完全集。因此,没有一种算法可以为您提供最佳答案。

但有接近最佳的答案。

技巧:
1) 基于启发式的算法 - HEFT、MinMin、MaxMin 等...
2)基于元启发式的算法 - 遗传算法,粒子群优化等......

或者您可以发明新的算法。

如果您愿意,我可以分享简单的代码,这些代码将生成接近最佳的时间表。

Task Scheduling problems comes under NP-complete set. So there is not a single algorithm to produce best answer for you.

But there are near-optimal answers.

Techniques:
1) Heuristic-based algorithms - HEFT, MinMin, MaxMin etc...
2) Meta-heuristic based algorithms - Genetic Algorithm, Particle Swarm Optimization etc...

or you can invent new algorithm.

I can share simple code that will generate near-optimal schedule if you want.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文