我正在处理的软件应用程序需要能够根据当前拥有的任务数量为一组用户分配任务,其中具有最少任务的用户最有可能完成下一个任务.但是,当前任务负载应被视为加权,而不是绝对订单定义.IOW,我需要实现一个加权的负载平衡算法.
假设有五个用户,具有以下任务数:
A:4 B:5 C:0 D:7 E:9
我想为CABDE命令中的下一个任务确定用户的优先级,其中C最有可能获得分配,E最不可能.这里有两件重要的事情需要注意:
就目前而言,我们可以将所有任务视为平等,但我不介意将任务困难作为我将来可以使用的变量 - 但这纯粹是锦上添花.
到目前为止我提出的想法在某些情况下并不是很好.如果用户数量很多,他们可能会过度密切地对用户进行加权,如果用户没有当前任务,他们可能会失败,或者....
我试过在网上闲逛,但运气不好.任何人都可以给我一个运行良好的算法的快速摘要吗?我不需要实际的实现 - 我会做那部分 - 只是一个很好的描述.另外,有一个可以免费访问的好网站吗?
此外,虽然我当然欣赏质量,但这不一定在统计上是完美的.所以,如果你能想到一个好但不是很好的技术,我很感兴趣!
language-agnostic algorithm load-balancing scheduling resource-scheduling
一位教授曾在课堂上告诉我们,Windows,Linux,OS X和UNIX可以在线程而不是进程上扩展,因此即使在单个处理器上,线程也可能使您的应用程序受益,因为您的应用程序将在CPU上获得更多时间.
我尝试在我的机器上使用以下代码(只有一个CPU).
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
pthread_t xs[10];
void *nop(void *ptr) {
unsigned long n = 1UL << 30UL;
while(n--);
return NULL;
}
void test_one() {
size_t len = (sizeof xs) / (sizeof *xs);
while(len--)
if(pthread_create(xs+len, NULL, nop, NULL))
exit(EXIT_FAILURE);
len = (sizeof xs) / (sizeof *xs);
while(len--)
if(pthread_join(xs[len], NULL))
exit(EXIT_FAILURE);
}
void test_two() {
size_t len = (sizeof xs) / (sizeof *xs);
while(len--) nop(NULL);
}
int main(int argc, char *argv[]) {
test_one();
// test_two();
printf("done\n");
return …Run Code Online (Sandbox Code Playgroud) 在我的CRM中,我应用程序应该每分钟检查和处理一次工作流程.我想知道是否有任何方式使用某种cron task或者自动化这些东西scheduling.我对CRM比较陌生.
我应该怎样做才能使用标准CRM工具或第三方插件制作上述内容?
苏丹.
我需要配置一个超出Spring内置调度功能的调度算法(基本上"每5分钟一次,但只在4:00h到16:00h之间").似乎实现org.springframework.scheduling.Trigger接口是可行的方法,这似乎很简单.
我无法弄清楚的部分,在文档中似乎没有回答:这是如何与XML配置混合的?似乎没有任何方法在任务命名空间的元素中指定自定义触发器bean(除了Quartz示例).
如何在Spring 3应用程序中使用自定义触发器?理想情况下使用Bean XML配置.
我目前正在创建一个使用Ruby on Rails创建的仪表板应用程序.
我为Ping添加了一个服务器模型和控制器.
我想要的是ping在给定的服务器IP地址上运行命令.
我该如何处理并将结果(状态和M/S)记录到数据库中?
我也想知道如何每分钟运行命令.
我正在为我的离散事件模拟开发一个时钟类.我已经在PriorityQueue中保存了事件,因此根据哪个事件具有最近的事件时间进行排序.然而,有一件事我无法理解.在我读过的关于离散事件模拟的论文中,明确指出时钟从事件跳转到事件,因此没有必要有一个"滴答"的时钟.
但是如何工作,我有一个EventScheduler类,它将事件保存在PriorityQueue中.所以在确定下一个事件的时间之后,我可以在Clock中调用一个"setTime"方法,EventScheduler会在下一个事件的给定时间内调用它吗?但那么它永远不会真正作为一个时钟运行它只会继续跳到下一个事件?
我认为时钟运行(滴答),然后它知道EventScheduler何时发生事件,当时钟到达那个时间时,它处理事件,更新系统状态并可能生成输出事件.
很抱歉有点不清楚,但我只是对时钟如何工作的任何提示感兴趣,它是否记录,然后只在事件发生时"做"事情或者只是从事件跳到事件?
你也建议我可以使用java中的任何内置功能吗?例如Timer类
我需要安排从0600到1800的工作.工作应该每两个小时后运行一次.例如0800,1000,1200,1400,1600,1800.
这是我到目前为止设法完成的代码:
DECLARE
l_id binary_integer;
begin
sys.dbms_job.submit(job => l_id, what => 'integration_export;', interval => 'TRUNC(SYSDATE,''hh24'')+0/24/60');
sys.dbms_output.put_line(l_id);
end;
Run Code Online (Sandbox Code Playgroud)
当然,这将在每2小时后运行一次,而不是在1801 - 0759停止.我怎么能添加这个限制?我要做的一件事是创建另一个计划程序,该程序在1801处唤醒并在此时间点更改为此作业.但是,我想知道这是不是一个好主意.
有什么建议?
提前致谢 :-)
假设我有一堆带有一堆块的CUDA内核,并假设在同一个对称多处理器上的另一个块之后安排了一个块(也就是说,所有warp的共享内存区域相同的单元).目前,NVIDIA没有在API或每GPU文档中指定执行之间共享内存会发生什么.但实际上,关于块的共享内存内容,下列哪一项呢?:
为了缩小可能出现的情况的变化,请具体参考每个块使用最大可能共享内存量的情况 - 在Kepler GPU上为48 KB.
我正在编写一个程序,我需要对作业进行分组,以最大限度地减少CNC打孔的工具更改.我刚开始的时候问了一个关于它的问题,但是当我编写程序时,方法已经改变了.
我有一份工作清单:
jobs = ['5618', '5612', '5613', '5897', '5589', '5474',
'5472', '5470', '5471', '9040']
Run Code Online (Sandbox Code Playgroud)
我的程序已经将这些分类为可以一起完成的有效"组"工作:
['5471', '9040']
['5618', '5612', '5613', '5472']
['5471', '5589', '5897']
['5618', '5612', '5471', '5613']
['5471', '5474']
['5471', '5470', '5589']
Run Code Online (Sandbox Code Playgroud)
现在我需要选择意味着完成所有工作的最小组数.猜测它会是这个组合:
['5618', '5612', '5613', '5472']
['5471', '5589', '5897']
['5470', '5589'] #this is the last group in the above lists but with 5471
#removed because it's already been done
[9040] #same as above except the first group with 5471 already been done.
Run Code Online (Sandbox Code Playgroud)
我在逻辑上考虑这样做的方法是找到最长的有效组,假设是第一组,从剩余的作业中删除该组中的作业.重复.但是,当有两个具有相同长度的组时,这不起作用.也许根据工作在其他群体或其他事物中的次数加权函数?我不知道.想法?蛮力吗?哈哈
我有以下情况:我想运行2个线程:线程A:一个运行1次的void函数线程B:一个永无止境的方法
我想再次运行线程A,而不是线程B,再次运行线程A,再次运行B,......
但是线程B会阻塞线程A,因为它的功能永远不会结束.有人能给我一个例子来解决Java中的这个调度问题吗?
我想要实现的是
scheduling ×10
java ×3
algorithm ×2
clock ×1
cron ×1
cuda ×1
dynamics-crm ×1
jobs ×1
linux ×1
oracle ×1
oracle11g ×1
performance ×1
ping ×1
plsql ×1
python ×1
ruby ×1
simulation ×1
sorting ×1
spring ×1
timer ×1