受@放翁_文初的<逻辑划分线程池> 一文的启发, 用了几个小时动手实现了一个简陋支持配额的共享线程池. 基本思路与放翁相同, 区别在于引入了两种线程分配策略:
悲观策略
简单的共享一个线程池, 最容易出现的问题就是不同类型任务(或事件)在随机争抢线程资源时, 可能出现”饿死”现象(即抢不到线程).
因此, 悲观策略的宗旨是绝对的保证每种任务都会被分配到预留的(reserve)配额, 这种做法本质上和多个线程池的做法一样. 如总共100个线程, A任务可用50个线程, B任务可用30个线程, C任务可用20个, 三者互不占用, 一旦任意谁的任务实例超过配额, 将被迫等待直至先前的任务实例结束释放了线程.
统一到一个共享的池中, 好处自然是归一化管理, 容易从全局上比较不同任务的优先级, 做出合理的资源分配; 坏处可能就是需要去实现这样一个支持配额的共享线程池. 当然, 若不觉得多个线程池有什么不好, 悲观策略其实意义不大:(.
乐观策略
无论是使用悲观策略的共享线程池, 还是精心规划多个线程池, 由于都是预定义, 难免在环境变化过程中出现线程资源不足或闲置的情况. 要是可以这样, 某个时段当A任务较少时, 它所闲置的线程能协调给负载较高的B任务, 那就完美了!
故, 共享线程池的乐观策略就是在保证每种任务预留最低资源的情况下, 允许任务依据一个弹性(elastic)配额去争抢线程资源, 达到线程利用率的最大化. 如有100个线程的池, A任务大部分的时候负载较高, 则给予50个的预留配额, 30个的弹性配额; 而B任务是偶尔某个时段复杂较高, 则给予20个线程的预留配额, 30个的弹性配额, 这样留了一个30个线程的资源空间, 让AB去合理竞争.
很多实现的细节, 还请参见源代码.
源代码
CentralExecutor.java
CentralExecutorTest.java
热烈欢迎不同思路或意见的涌现!
分享到:
相关推荐
在Windows Server 2016操作系统中,文件共享配额是一项重要的管理功能,它允许管理员控制用户或特定文件夹的存储使用量。设置配额的主要目的是有效地管理存储资源,防止个别用户或文件夹过度占用存储空间,从而影响...
论文研究-物联网环境下碳配额和减排双重约束的企业资源共享策略.pdf, 制造业之间的产能不均导致了许多潜在的浪费,为使现存资源得到更高效的利用,物联网平台可以帮助...
本文将深入探讨如何在NFS上实施磁盘配额,以控制用户或用户组对共享资源的使用,确保网络环境下的资源合理分配与高效利用。 ### 实现磁盘配额的重要性 磁盘配额是操作系统中用于限制用户或用户组对磁盘空间使用量...
最后,我们将这些元素结合起来,讨论磁盘配额与文件共享的综合操作。在企业环境中,通常需要在保证数据安全的同时实现文件共享。例如: 1. 设置共享文件夹,并指定合适的共享权限,如只读、读/写或完全控制。 2. ...
- 若不支持,需要重新编译内核,并在配置时选择支持磁盘配额功能。 2. **修改`/etc/fstab`文件以激活配额选项:** - 使用文本编辑器(如vi或nano)编辑`/etc/fstab`文件。 - 对需要启用配额的文件系统,在挂载...
在Windows Server 2003域环境下的文件共享与配额设定是一项重要的网络管理技能,它不仅能够提高文件管理的效率,还能够保障数据的安全性和合规性。以下是对这一过程的详细解析,涵盖从创建共享文件夹到设定配额及...
4. 磁盘配额可以在个人计算机的共享文件夹中限制用户对磁盘空间的使用。 实现磁盘配额的步骤包括: 1. 检查 Linux 内核是否打开磁盘配额支持。 2. 修改 /etc/fstab,对所选文件系统激活配额选项。 3. 更新装载文件...
【实验任务】 1. 启动磁盘配额 2. 限制磁盘配额 【实验目的】 掌握磁盘配额管理方法
2. 在D盘创建文件夹并进行共享,设置权限,为用户提供访问路径,如H盘映射到D盘的test1或manager1文件夹。 3. 使用磁盘配额工具设置配额规则,确保test1用户只能使用100MB,而manager1用户可以使用200MB。 4. 登录...
这种技术对于大型网络环境或者多用户共享的计算机系统尤其有用,可以防止个别用户过度消耗磁盘空间,从而影响其他用户的服务质量和系统的整体性能。 在Windows操作系统中,磁盘配额可以通过以下步骤进行设置: 1. ...
Linux 磁盘配额管理实验 Linux 磁盘配额管理是 Linux 操作系统中的一项重要功能,旨在限制用户或用户组对磁盘空间的使用,以避免磁盘空间的滥用和浪费。本实验的目的是将/usr 设置为一个独立分区,并对 Linux 的...
其中,`-a`扫描所有支持配额的文件系统,`-v`显示详细输出,`-u`检查用户配额,`-m`重新装载文件系统。 5. **设置用户配额**:使用`edquota user`命令为指定用户设置配额,例如`edquota test`,然后根据提示设置`...
Linux用户配额是一种管理系统资源的方法,它允许管理员对单个用户或用户组的磁盘空间使用量进行限制,以防止个别用户占用过多的磁盘空间,从而影响到系统的整体性能和稳定性。以下是对Linux用户配额设置的详细步骤和...
在Linux NFS服务器上实现磁盘配额 实现共享NFS磁盘限制 可用于docker容器挂载卷的大小限制 方便管理各容器大小
在现代企业环境中,文件服务器作为数据存储和共享的关键组成部分,其稳定性和安全性尤为重要。为了提高文件服务器的可靠性和性能,通常会采用动态磁盘技术来构建RAID-5卷,并通过磁盘配额管理不同用户的存储空间,...
根据给定的文件信息,我们将深入探讨如何在Linux环境下配置ProFTPD服务器,使其支持MySQL数据库和磁盘配额功能。ProFTPD是一款强大的FTP服务器软件,它提供了丰富的特性和高度的可定制性,适用于各种复杂的网络环境...
### Linux磁盘配额管理详解 #### 实验背景与目的 磁盘空间是任何操作系统中宝贵的资源之一。在Linux环境中,有效地管理和分配磁盘空间对于维护系统的稳定性和提高资源利用率至关重要。磁盘配额功能允许管理员为...
- 支持两种配额限制方式: - 块配额(block quota):限制用户或组可以使用的磁盘空间总量。 - 索引节点配额(inode quota):限制用户或组可以拥有的文件数量。 - 区分硬配额和软配额: - **硬配额**:用户...
当多个用户共享同一个磁盘存储系统时,如果没有配额管理,可能会导致某个用户无限制地占用空间,引发资源紧张,甚至可能导致系统崩溃。因此,引入配额管理显得尤为必要。 Linux提供了两种级别的配额管理:用户级和...
samba服务器共享文件的大小和数量限定,维护方便,设置简单,新手必备