Achieving high performance in many multi-server systems requires finding a good assignment of worker threads to servers and also effectively allocating each server's resources to its assigned threads. The assignment and allocation components of this problem have been studied extensively but largely separately in the literature. In this paper, we introduce the assign and allocate (AA) problem, which seeks to simultaneously find an assignment and allocation that maximizes the total utility of the threads. Assigning and allocating the threads together can result in substantially better overall utility than performing the steps separately, as is traditionally done. We model each thread by a utility function giving its performance as a function of its assigned resources. We first prove that the AA problem is NP-hard. We then present a $2 (\sqrt{2}-1) > 0.828$ factor approximation algorithm for concave utility functions, which runs in $O(mn^2 + n (\log mC)^2)$ time for $n$ threads and $m$ servers with $C$ amount of resources each. We also give a faster algorithm with the same approximation ratio and $O(n (\log mC)^2)$ time complexity. We then extend the problem to two more general settings. First, we consider threads with nonconcave utility functions, and give a 1/2 factor approximation algorithm. Next, we give an algorithm for threads using multiple types of resources, and show the algorithm achieves good empirical performance. We conduct extensive experiments to test the performance of our algorithms on threads with both synthetic and realistic utility functions, and find that they achieve over 92\% of the optimal utility on average. We also compare our algorithms with a number of practical heuristics, and find that our algorithms achieve up to 9 times higher total utility.
翻译:在许多多服务器系统中实现高性能需要找到一个良好的员工线条到服务器,并且有效地将每个服务器的资源分配到指定的线条上。 这个问题的指派和分配部分已经广泛研究过, 但基本上在文献中是分开的。 在本文中, 我们引入了指派和分配( AA) 问题, 试图同时找到指派和分配使线条总效用最大化的任务和分配。 将线条一起分配和分配可以大大提高总体效用, 而不是像以往那样单独执行步骤。 我们用一个公用事业功能来模拟每条线条线条线, 将它的性能作为指定资源的函数。 我们首先证明, AA 的问题是NP- 硬的。 我们然后提出一个2美元 (\ qrt{2}-1) > 0. 828$ 的调值比值算法, 以美元 + n( log mC) 2), 时间, 美元线条线条线条和 美元服务器, 以美元 美元 。 我们还用一个更高级的运算, 我们用两个近的精确比率进行计算, 和 将一个测试的运算的运算的运行 。