首页
学习
活动
专区
圈层
工具
发布

如何确定线程池的大小?

通常有点年纪的程序员或许都听说这样一个说法 (其中 N 代表 CPU 的个数) CPU 密集型应用,线程池大小设置为 N + 1 IO 密集型应用,线程池大小设置为 2N 这个说法到底是不是正确的呢?...其实这是极不正确的。那为什么呢? 首先我们从反面来看,假设这个说法是成立的,那我们在一台服务器上部署多少个服务都无所谓了。因为线程池的大小只能服务器的核数有关,所以这个说法是不正确的。...那具体应该怎么设置大小呢? 假设这个应用是两者混合型的,其中任务即有 CPU 密集,也有 IO 密集型的,那么我们改怎么设置呢?是不是只能抛硬盘来决定呢? 那么我们到底该怎么设置线程池大小呢?...CPU 个数 cat /proc/cpuinfo| grep "processor"| wc -l 总结 合适的配置线程池大小其实很不容易,但是通过上述的公式和具体代码,我们就能快速、落地的算出这个线程池该设置的多大...不过最后的最后,我们还是需要通过压力测试来进行微调,只有经过压测测试的检验,我们才能最终保证的配置大小是准确的。

2.9K10

如何确定线程池的大小?

通常有点年纪的程序员或许都听说这样一个说法 (其中 N 代表 CPU 的个数) CPU 密集型应用,线程池大小设置为 N + 1 IO 密集型应用,线程池大小设置为 2N 这个说法到底是不是正确的呢?...其实这是极不正确的。那为什么呢? 首先我们从反面来看,假设这个说法是成立的,那我们在一台服务器上部署多少个服务都无所谓了。因为线程池的大小只能服务器的核数有关,所以这个说法是不正确的。...那具体应该怎么设置大小呢? 假设这个应用是两者混合型的,其中任务即有 CPU 密集,也有 IO 密集型的,那么我们改怎么设置呢?是不是只能抛硬盘来决定呢? 那么我们到底该怎么设置线程池大小呢?...CPU 个数 cat /proc/cpuinfo| grep "processor"| wc -l 总结 合适的配置线程池大小其实很不容易,但是通过上述的公式和具体代码,我们就能快速、落地的算出这个线程池该设置的多大...不过最后的最后,我们还是需要通过压力测试来进行微调,只有经过压测测试的检验,我们才能最终保证的配置大小是准确的。

1.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    (七)线程池的大小如何确定

    简单的说,就是需要大量的输入输出,不如读文件、写文件、传输文件、网络请求。 如何确定线程池大小? 线程数不是越多越好。...在《Java并发编程实践》中,是这样来计算线程池的线程数目的: 一个基准负载下,使用 几种不同大小的线程池运行你的应用程序,并观察CPU利用率的水平。...给定下列定义: Ncpu = CPU的数量 Ucpu = 目标CPU的使用率, 0 <= Ucpu <= 1 W/C = 等待时间与计算时间的比率 为保持处理器达到期望的使用率,最优的池的大小等于...: Nthreads = Ncpu x Ucpu x (1 + W/C) CPU数量是确定的,CPU使用率是目标值也是确定的,W/C也是可以通过基准程序测试得出的。...如果线程池中的线程在执行任务时,密集计算所占的时间比重为P(0的大小经验公式 T = C / P。

    1.9K10

    偏移量、客户区大小、视口大小、滚动大小、确定元素大小

    客户区大小指的是元素内容及其内边距所占空间的大小。...像textarea、html这些元素,当内容超过所设置的宽高后,就会出现一个滚动条,滚动大小的计算差不多就是指把元素内容平铺后的大小。...(上面两者主要是用于确定内容的实际大小) scrollLeft:被隐藏在内容区域左侧的像素数。 scrollTop:被隐藏在内容区域上方的像素数。...(上面两者既可以确定元素当前滚动的状态,也可以设置元素的滚动位置) 5、确定元素的大小 getBoundingClientRect( )方法,这个方法会返回一个矩形对象,包含4个属性left、top、...right和bottom,给出了元素在页面中相对于视口的位置 ①由于ie8及更早版本认为文档的左上角坐标是(2,2),而其他浏览器包括ie9则将(0,0)作为起点坐标,所以用函数使用它自身的属性来确定是否要对坐标进行调整

    1.7K20

    雕虫:如何确定Java线程池的大小

    在 Java 中,创建线程会产生显著的成本。创建线程消耗时间,增加请求处理的延迟,并且涉及 JVM 和操作系统的大量工作。为了减轻这些开销,需要使用线程池。本文将深入探讨确定理想线程池大小的技巧。...目标是确定有效处理这些请求的最佳线程池大小,考虑因素如下包括数据库连接池,服务的吞吐量以及CPU核数。...更多的并发请求可能会使服务不堪重负,并导致性能下降或出现错误。 2.3 CPU 核数 确定服务器上可用的 CPU 内核数量对于优化线程池大小至关重要。...确定 CPU 绑定任务的线程数,在Java中使用 Runtime.getRuntime().availableProcessors() 以确定可用的 CPU 核心的数量,这里假设有8个核。...线程池大小计算的统一方法 确定线程池大小的公式如下: 线程数 = 可用内核数 * 目标 CPU 利用率 * (1 + 等待时间/服务时间) 其中: 可用内核数量: 这是应用程序可用的 CPU 内核数量。

    26710

    InputStream和OutputStream的思考

    InputStream和OutputStream 当你对IO有了基本的概念,接下来要谈的就是java语言对IO的封装。...看一看InputStream和OutputStream的源码,我们发现他们都是抽象类,而不是接口。这个问题值得思考,在这段讲完后笔者会给出自己的看法。...write(int b) 这个方法和InputStream的read()方法刚好是相反的,写一个字节,虽然入参是int,但是写还是会写一个字节。...还有工程师提供了带读写限制的FilterInputStream的读实现类,例如我们只希望读取到最多5MB的数据,而InputStream可能提供超过5MB的数据。...总结 顺着对IO的理解,抽象类InputStream和OutputStream源码的阅读,特殊实现类FilterInputStream和FilterOutputStream的应用。

    97610

    【DL】训练神经网络时如何确定batch的大小?

    因此在面对神经网络这种容量很大的model前,是很有必要深刻的理解一下各个超参数的意义及其对model的影响的。 贴心的小夕还是先带领大家简单回顾一下神经网络的一次迭代过程: ?...由此,最直观的超参数就是batch的大小——我们可以一次性将整个数据集喂给神经网络,让神经网络利用全部样本来计算迭代时的梯度(即传统的梯度下降法),也可以一次只喂一个样本(即严格意义上的随机梯度下降法,...由此看出,显然在同等的计算量之下(一定的时间内),使用整个样本集的收敛速度要远慢于使用少量样本的情况。...当然得益于GPU里面超多的核,超强的并行计算能力啦。 因此,在工程实际中,从收敛速度的角度来说,小批量的样本集是最优的,也就是我们所说的mini-batch。...暂且不说一些很高深的理论如“神经网络的loss曲面中的局部最优点与全局最优点差不太多”,我们就从最简单的角度想~ 想一想,样本量少的时候会带来很大的方差,而这个大方差恰好会导致我们在梯度下降到很差的局部最优点

    1K10

    从开发到生产上线,如何确定集群大小?

    翻译|毛家琦 校对|秦江杰 在 Flink 社区中,最常被问到的问题之一是:在从开发到生产上线的过程中如何确定集群的大小。这个问题的标准答案显然是“视情况而定”,但这并非一个有用的答案。...需要考虑的关键指标是: 每秒记录数和每条记录的大小 已有的不同键(key)的数量和每个键对应的状态大小 状态更新的次数和状态后端的访问模式 最后,一个更实际的问题是与客户之间围绕停机时间、延迟和最大吞吐量的服务级别协议...从 Kafka 消息源消费的每条消息大小(平均)为 2 kb。 假设吞吐量为每秒 100 万条消息。要了解窗口运算符(window operator)的状态大小,需要知道不同键的数目。...这些 source 每秒接收 1000000 条消息,每条消息大小为 2 KB。...Kafka 源也保持一定的状态,但与窗口运算符相比,它可以忽略不计。 要了解窗口运算符(window operator)的状态大小,需要从不同的角度进行查看。

    1.3K20

    卷积神经网络的卷积核大小、个数,卷积层数如何确定呢?

    卷积神经网络的卷积核大小、卷积层数、每层map个数都是如何确定下来的呢?...在达到相同感受野的情况下,卷积核越小,所需要的参数和计算量越小。 具体来说。卷积核大小必须大于1才有提升感受野的作用,1排除了。...而大小为偶数的卷积核即使对称地加padding也不能保证输入feature map尺寸和输出feature map尺寸不变(画个图算一下就可以发现),2排除了。所以一般都用3作为卷积核大小。...field的大小 CV的任务, context window是很重要的....所以你对自己模型的receptive field的大小要心中有数. 这个对效果的影响还是很显著的. 特别是用FCN, 大目标需要很大的receptive field.

    1.2K10

    卷积神经网络的卷积核大小、个数,卷积层数如何确定呢?

    卷积神经网络的卷积核大小、卷积层数、每层map个数都是如何确定下来的呢?...在达到相同感受野的情况下,卷积核越小,所需要的参数和计算量越小。 具体来说。卷积核大小必须大于1才有提升感受野的作用,1排除了。...而大小为偶数的卷积核即使对称地加padding也不能保证输入feature map尺寸和输出feature map尺寸不变(画个图算一下就可以发现),2排除了。所以一般都用3作为卷积核大小。...field的大小 CV的任务, context window是很重要的....所以你对自己模型的receptive field的大小要心中有数. 这个对效果的影响还是很显著的. 特别是用FCN, 大目标需要很大的receptive field.

    18.1K74

    CPU 密集型 和 IO密集型 的区别,如何确定线程池大小?

    如何确定线程池大小? 线程数不是越多越好。 由于CPU的核心数有限,线程之间切换也需要开销,频繁的切换上下文会使性能降低,适得其反。 简单的总结就是: Ncpu 表示 核心数。...在《Java并发编程实践》中,是这样来计算线程池的线程数目的: 一个基准负载下,使用 几种不同大小的线程池运行你的应用程序,并观察CPU利用率的水平。...给定下列定义: Ncpu = CPU的数量 Ucpu = 目标CPU的使用率, 0 <= Ucpu <= 1 W/C = 等待时间与计算时间的比率 为保持处理器达到期望的使用率,最优的池的大小等于...: Nthreads = Ncpu x Ucpu x (1 + W/C) CPU数量是确定的,CPU使用率是目标值也是确定的,W/C也是可以通过基准程序测试得出的。...如果线程池中的线程在执行任务时,密集计算所占的时间比重为P(0的大小经验公式 T = C / P。

    20.4K59

    inputstream类型的变量需要关闭吗_input type

    大家好,又见面了,我是你们的朋友全栈君。 inputStream的作用是用来表示那些从不同数据源产生输入的类。...,以便我们可以将他们收集合并到一个流内 6 其他数据源,如internet连接等 每一种数据源都有相应的InputStream子类。...另外,FilterInputStream也属于一种InputStream,为”装饰器”(decorator)类提供基类,其中,”装饰器”类可以把属性或有用的接口与输入流连接在一起。...单一InputStream 两个InputSream对象或一个容纳inputStream 对象的容器Enumeration 作为一种数据源;将其与FilterInputStream 对象相连以提供有用接口...其中, “装饰器”为其他的InputStream类提供有用 功能 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

    66820
    领券