负载平衡线程请求百分比

2024-01-31

我有一个工作线程池,我在其中根据百分比向它们发送请求。例如,工作人员 1 必须处理总请求的 60%,工作人员 2 必须处理总请求的 31%,最后工作人员 3 必须处理 9%。我需要从数学上知道如何缩小数字并保持比率,这样我就不必向线程 1 发送 60 个请求,然后开始向工作线程 2 发送请求。这听起来像是“线性比例”数学方法。无论如何,我们感谢有关此问题的所有意见


思考这个问题的一种方法使其与在基于像素的显示器上绘制斜线的问题非常相似,这可以通过布雷森纳姆算法 http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm.

首先,为简单起见,我们假设只有 2 个工作人员,并且他们应该获取传入请求的一小部分 p(对于工作人员 1)和 (1-p)(对于工作人员 2)。想象一下,“发送到工作程序 1 的请求”是图表的水平轴,“发送到工作程序 2 的请求”是图表的垂直轴:我们想要做的是在该图表中绘制一条从 (0, 0) 并且具有斜率 (1-p)/p (即,向右每前进 p 个单位,向上前进 (1-p) 个单位)。当新的请求到来时,就会绘制一个新的像素。这个新像素将始终紧邻前一个像素的右侧(如果我们将作业分配给工作人员 1)或紧邻其上方(如果我们将其分配给工作人员 2),因此它不太像 Bresenham 的算法,其中对角线移动是有可能,但也有相似之处。

对于传入的每个新请求,我们必须将该请求分配给其中一个工作人员,对应于从前一个像素向右或向上绘制下一个像素。我建议选择正确方向的一个好方法是选择一个最小化误差函数。最简单的方法是获取 (0, 0) 与 2 个可能选择中的每一个所产生的点之间的直线的斜率,并将这些斜率与理想斜率 (1-p)/p 进行比较;然后选择产生最小差异的一个。这将导致绘制的像素尽可能接近地“跟踪”理想线。

为了将其推广到二维以上(工人),我们不能直接使用斜率。如果有W个工人,我们需要提出一些函数error(X,Y),其中X和Y都是W维向量,一个代表理想的方向(分配请求的比率,类似于前面的斜率 (1-p)/p),另一个表示候选点,并返回一些表示它们方向差异程度的数字。幸运的是,这很容易:我们可以采取两个向量之间的角度的余弦通过划分他们的点积 http://en.wikipedia.org/wiki/Dot_product#Geometric_definition通过它们的大小的乘积,这很容易计算。如果它们的方向相同,则为 1,否则小于 1,因此当新请求到达时,我们需要做的就是为每个工作人员 1

[EDIT]

这个程序也会适应理想方向的变化。但就目前情况而言,它试图(尽其所能)使迄今为止分配的每个请求的总体比率跟踪理想方向,因此如果程序运行了很长时间,那么即使目标方向进行很小的调整也可能会导致较大的“波动”以进行补偿。在这种情况下,当调用 error(X, Y[i]) 时,最好使用最新像素(请求分配)与某个 k 个(例如 k=100)步中的像素之间的差异来计算第二个参数前。 (在原始算法中,我们隐式减去起始点 (0, 0),即 k 尽可能大。)这仅需要您保留最后 k 个选择的端点。选择 k 太大意味着您仍然可以获得较大的波动,而选择 k 太小可能意味着“线”偏离路线,有些工作人员根本没有选择过,因为每个任务都会极大地改变方向。您可能需要进行实验才能找到合适的 k。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

负载平衡线程请求百分比 的相关文章

  • 许可证密钥模式检测? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这不是真实情况 请忽略您可能认为适用的法律问题 因为它们并不适用 假设我有一组 200 个已知的有效许可证密钥 用于假设的软件许可算法
  • 查找二维空间中圆内的所有点

    我表示我的 2D 空间 考虑一个窗口 其中每个像素显示为 2D 数组中的一个单元格 即 100x100 的窗口由相同维度的数组表示 现在给定窗口中的一个点 如果我画一个半径的圆r 我想找到该圆圈中的所有点 我想我应该检查半径周围方形区域中的
  • 使用动态编程理解正则表达式字符串匹配

    我遇到了这个问题 要求您实现一个支持 的正则表达式匹配器 和 其中 匹配任何单个字符 匹配零个或多个前面的元素 isMatch aa a false isMatch aa aa true isMatch aaa aa false isMat
  • 如何修复错误嵌套/未闭合的 HTML 标签?

    我需要通过使用正确的嵌套顺序关闭任何打开的标签来清理用户提交的 HTML 我一直在寻找一种算法或Python代码来做到这一点 但除了PHP等中的一些半生不熟的实现之外 还没有找到任何东西 例如 类似的东西 p p ul li Foo bec
  • 使用回溯(而不是 DFS)背后的直觉

    我正在解决单词搜索 https leetcode com problems word search description LeetCode com 上的问题 给定一个 2D 板和一个单词 查找该单词是否存在于网格中 该单词可以由顺序相邻单
  • 如何在 O(n) 时间内遍历二叉树而不需要额外的内存

    给定一棵带有整数 左指针和右指针的二叉树 如何在 O n 时间和 O 1 额外内存 无堆栈 队列 递归 内遍历该树 This guy http nandacumar blogspot com 2006 06 traversing tree
  • 如何在从左到右、从上到下排序的二维数组中搜索数字?

    我最近收到了这个面试问题 我很好奇有什么好的解决方案 假设我有一个二维数组 其中所有 数组中的数字在增加 从左到右 从上到下的顺序 底部 搜索和搜索的最佳方式是什么 判断目标号码是否在 大批 现在 我的第一个倾向是使用二分搜索 因为我的数据
  • 将区间映射到更小的区间的算法

    我尝试搜索 但由于问题的性质 我无法找到满意的内容 我的问题如下 我试图将 0 到 2000 范围内的数字 尽管理想情况下上限是可调的 映射到 10 到 100 范围内的更小的区间 上限将映射 2000 gt 100 和下限也是如此 除此之
  • 在 Python 中删除表达式树及其每个子表达式树中第一个元素周围的括号

    目标是实现简化操作 删除表达式树及其每个子表达式树中第一个元素周围的括号 其中表达式作为括在各个括号中的字符串输入给出 这必须适用于任意数量的括号 例如 12 3 45 6 gt 123 45 6 删除 12 周围的括号 然后删除 45 周
  • 用 ruby​​ 解决旅行商问题(50 多个位置)

    我在一家快递公司工作 目前 我们 手动 解决了 50 多个地点的路线 我一直在考虑使用 Google Maps API 来解决这个问题 但我读到有 24 点的限制 目前我们在服务器中使用 Rails 因此我正在考虑使用 ruby 脚本来获取
  • 算法:最大计数器

    我有以下问题 您有 N 个计数器 最初设置为 0 并且您对它们有两种可能的操作 increase X 计数器 X 加 1 max counter 所有计数器都设置为任何计数器的最大值 给出一个包含 M 个整数的非空零索引数组 A 该数组代表
  • 合并空间上接近的路径/线段的算法

    我正在寻找一种用于街道地图制图概括的几何算法 名称 在我的地图数据中 我有许多路径 点的有序列表 由线段连接 这些路径彼此靠近且几乎平行 我如何 1 识别这些 相邻路径 即如何找到比某个阈值更接近的路径 以及 2 将它们合并成一条路径 即如
  • 如何最小化两个子多边形的最大纵横比?

    我想使用直线将凸多边形切成给定面积比的两部分 以使两个子多边形的较大纵横比最小化 目前我的方法包括选择一个随机起点 计算将多边形分割成目标区域的适当终点 然后计算两个纵横比中较大的一个 然后重复这个很多次 直到我足够接近最小值 多边形 A
  • 当目标是查找某个字符串的所有出现情况时,KMP 最坏情况的复杂度是多少?

    我还想知道哪种算法在查找另一个字符串中所有出现的字符串时具有最坏情况的复杂性 博耶 摩尔算法似乎具有线性时间复杂度 KMP 算法在查找字符串中所有出现的模式时具有线性复杂度 如 Boyer Moore 算法1 如果您尝试在 aaaaaaaa
  • 我想优化这个短循环

    我想优化这个简单的循环 unsigned int i while j 0 j is an unsigned int with a start value of about N 36 000 000 float sub 0 i 1 unsig
  • 用于插入/删除/排名/选择查询的最佳数据结构/算法

    到目前为止 我知道像AVL树和红黑树这样的自平衡BST可以在O log n 次内完成这些操作 然而 要使用这些结构 我们必须自己实现AVL树或RB树 我听说有一个算法 实现这四个操作而不使用自平衡 BST 有了我们自己定义的结构 我们就需要
  • 按百分比减少多边形面积

    我有一个由点 x y 组成的多边形 我想做的是将其减少一个百分比 请记住 我不想只是扩大规模 多边形应该有一种内部边界 其宽度取决于百分比 该内部边界被多边形切断 谁知道可以实现这一目标的算法 输入 点数组 百分比 输出 点数组 你所寻求的
  • 使到 n 个点的集合的欧氏距离之和最小的点

    我有一组点W x1 y1 x2 y2 xn yn 在 2D 平面上 你能找到一种算法 将这些点作为输入并返回一个点 x y 在 2D 平面上 距以下点的距离之和最小W 换句话说 如果 di Euclidean distance x y xi
  • 使用FFT算法计算

    给定在平面上的点 1 0 2 0 n 0 上发现的一组 n 个粒子电荷载流子 在 i 0 点发现的粒子电荷记为 Qi 作用在粒子上的力由以下公式给出 C is a Coulomb s constant 给出一个算法来计算 Fi 对于总复杂度
  • 缩短文本并仅保留重要句子

    德国网站 nandoo net 提供了缩短新闻文章的可能性 如果使用滑块更改百分比值 文本会发生变化并且某些句子会被遗漏 您可以在这里看到它的实际效果 http www nandoo net read article 299925 http

随机推荐

  • 如何使用 LWP 和正则表达式抓取 javascript 函数的日期参数?

    我在从特定网页抓取日期时遇到困难 因为该日期显然是传递给 JavaScript 函数的参数 我过去写过一些简单的抓取工具 没有任何重大问题 所以我没想到会出现问题 但我正在努力解决这个问题 该页面有 5 6 个日期 采用常规 yyyy mm
  • 为什么 getElementById 不适用于文档元素内的元素? [复制]

    这个问题在这里已经有答案了 如果你使用getElementById与文件类似 document getElementById那么它总是有效的 但是 如果我们对一个元素执行相同的操作x like x getElementById 然后它返回一
  • 如何在 primefaces 数据表中显示可变数量的列

    我有以下数组列表 class Report private String manufacturer private String color private List
  • 代码覆盖率结果窗口中的额外类

    在 Visual Studio 2010 中运行自动化测试后 代码覆盖率结果 选项卡显示一些我不明白的内容 接受测试的类之一称为 ApplicationData 它显示在代码覆盖率列表中 但它的变体也会出现 在本例中出现了三次 见下文 如果
  • 如何在 Javascript 中比较 C# Viewbag 中的值?

    我想比较一个布尔值Viewbag在 JavaScript 中 所以一开始我尝试了这个 if Viewbag MyBoolValue do sth 但后来我在控制台中出现错误 例如 Value False True is not declar
  • django:如何从包含外键的多个模型制作一种表单

    我正在尝试在一页上制作一个使用多个模型的表单 这些模型相互参考 我在验证表单时遇到问题 因为我不知道如何将表单中使用的两个模型的 id 获取到表单中以进行验证 我在模板中使用了隐藏键 但我不知道如何使其在视图中工作 我的代码如下 views
  • 如何使用笔记本jupyter在html中发布R代码

    我看到很多人谈论使用 jupyter 笔记本将代码转换和共享为 HTML 就像小菜一碟 但它对我来说变成了一场噩梦 我确实可以通过使用下拉菜单下载代码将其转换为 html 但它只能在我自己的计算机上访问 如果我将其作为链接发送给其他人 他们
  • Seaborn:如何用多个折线图制作子图? sns.relplot 似乎不支持? [复制]

    这个问题在这里已经有答案了 seaborn 文档区分了图形级函数和轴级函数 https seaborn pydata org introduction html figure level and axes level functions h
  • 如何使正则表达式匹配的一部分成为可选?

    这是一个示例字符串 123456 p654321 目前 我正在使用这场比赛来捕捉123456 and 654321分为两个不同的组 0 9 p 0 9 但有时 p654321字符串的一部分不会存在 所以我只想捕获第一组 我试图通过附加使第二
  • TFS 区域、最佳定义和配置

    最近迁移到 TFS 2010 后 我想知道区域的最佳或最广泛接受的定义或配置是什么 我在网上能找到的唯一有用的文章是this one http blogs msdn com b mattlind archive 2007 01 08 wha
  • SQLAlchemy 中的验证

    如何在 SQLAlchemy 中获取所需的验证器 实际上我只是想确信用户填写了表单中的所有必填字段 我使用 PostgreSQL 但它没有意义 因为从 models py 文件中的对象创建的表 from sqlalchemy import
  • Elixir 中的宏扩展:如何定义两个宏,一个使用另一个宏?

    我正在 Elixir 中尝试宏 因此 我要展示的代码当然应该使用简单的函数来完成 但是 我正在尝试 我想定义2个宏 A和B 并让A使用B来试验宏扩展 当我使用 A 时 我收到一个编译错误 指出function B is 不明确的 这是代码
  • 更改 :before 和 :after 伪元素的样式? [复制]

    这个问题在这里已经有答案了 这就是我的代码的样子 mainSpan before css background url gfx cmn main bg png 这似乎不起作用 所以我问是否可以添加 使用 jQuery 将背景图像添加到阴影元
  • 如何在 cmake 上获取库的完整本机名称?

    我需要将构建的库的本机名称 libfoo so 或 foo dll 传递给 add custom command 如何获取目标的完整库名称 该财产LOCATION有它但有完整的路径 属性 OUTPUT NAME 不返回任何内容 您可以使用生
  • 使用 Storyboard 中的属性字符串本地化 UILabel

    我有一个 UILabel 其文本在情节提要中设置为 归属 当我生成 Main strings 文件以翻译成其他语言时 该标签的文本不会出现 我尝试通过复制对象 ID 手动将条目添加到 Main strings 文件中 我尝试设置 text
  • Firebird x Windows 7 x gds32.dll错误

    我有一个来自新客户的 fdb 文件 firebird 他不知道版本 我尝试过使用一些 GUI 来访问数据库 但没有成功 他们都说它缺少 gds32 dll 但我有这个 我已将此 dll 复制到 GUI 文件夹 已将 dll 复制到 syst
  • GlGenTextures 不断返回 0

    我正在尝试生成这样的纹理 define checkImageWidth 64 define checkImageHeight 64 static GLubyte checkImage checkImageHeight checkImageW
  • 如何模拟 @InjectMocks 类的方法?

    例如我有处理程序 Component public class MyHandler AutoWired private MyDependency myDependency public int someMethod return anoth
  • 回调()或返回回调()

    可能我对 Node 的事件循环了解不够 说我有一个函数foo其中包含一个异步函数async func 我有吗 1 function foo callback stuff here async func function do somethi
  • 负载平衡线程请求百分比

    我有一个工作线程池 我在其中根据百分比向它们发送请求 例如 工作人员 1 必须处理总请求的 60 工作人员 2 必须处理总请求的 31 最后工作人员 3 必须处理 9 我需要从数学上知道如何缩小数字并保持比率 这样我就不必向线程 1 发送