线程也不是越多越好,多少是好?

news/2025/1/31 5:38:41/

前面我们评估了不同大小基因组构建索引所需的计算资源和时间资源和不同大小数据集比对所需的计算资源和时间资源。

下面我们进一步看下不同线程数的影响。

测试电脑配置

  1. 这是一个10核、20线程的处理器,主频2.8 G HZ,可超频到5.2 GhZ

  2. 在Windows系统上安装了Ubuntu子系统进行的测试。

测试指定不同线程数对速度提升的影响

因为测试电脑是最多20线程,这里指定1-2525个测试线程,程序如下:

# 10核心 20 线程for thread in `seq 1 25`; doi=SRR1039517mkdir -p ${i}/usr/bin/time -v -o star.${i}.thread${thread}.log STAR --runMode alignReads \--runThreadN ${thread} \--readFilesIn ${i}_1.fastq.gz ${i}_2.fastq.gz \--readFilesCommand zcat --genomeDir star_GRCh38 \--outFileNamePrefix ${i}/${i}. --outFilterType BySJout --outSAMattributes NH HI AS NM MD \--outFilterMultimapNmax 20 --alignSJoverhangMin 8 --alignSJDBoverhangMin 1 \--alignIntronMin 20 --alignIntronMax 1000000 \--alignMatesGapMax 1000000 \--outFilterMatchNminOverLread 0.66 --outFilterScoreMinOverLread 0.66 \--winAnchorMultimapNmax 70 --seedSearchStartLmax 45 \--outSAMattrIHstart 0 --outSAMstrandField intronMotif \--genomeLoad LoadAndKeep \--outTmpDir /tmp/${i}/ \--outSAMtype BAM Unsorted --quantMode GeneCountsdu -s ${i} | awk 'BEGIN{OFS="\t"}{print "Output_size: "$1/10^6}' >>star.${i}.thread${thread}.log
done

运行完成后,整理所需的计算资源和时间资源数据。

/bin/rm -f GRCh38_39517_star_reads_map_thread.summary
i=SRR1039517
for thread in `seq 1 25`; doecho ${thread} | \awk 'BEGIN{OFS="\t"}{print "nThreads"; print $1}' | \awk -v outputHeader=${thread} -f ./timeIntegrate2.awk - star.${i}.thread${thread}.log \>>GRCh38_39517_star_reads_map_thread.summary
done

汇总后的数据如下:

Time_cost    Memory_cost    nCPU    Output_size    nThreads
25.962    28.9048    0.98    5.58423    1
13.98    29.311    1.97    5.58424    2
9.95217    29.5176    2.93    5.58425    3
7.77033    29.7221    3.85    5.58426    4
6.356    29.9266    4.78    5.58428    5
5.1585    30.1311    5.61    5.58422    6
4.69233    30.3356    6.37    5.58426    7
4.51    30.5401    6.69    5.58429    8
4.39683    30.7445    6.94    5.58423    9
4.38017    30.949    6.99    5.58426    10
4.41233    31.1535    6.99    5.58424    11
4.45333    31.358    6.94    5.58424    12
4.41033    31.5624    6.95    5.58429    13
4.44267    31.7669    6.88    5.58428    14
4.4595    31.9714    6.87    5.58426    15
4.50567    32.0859    6.85    5.58424    16
4.458    32.2639    6.92    5.58429    17
4.46417    32.4802    6.86    5.58428    18
4.497    32.6487    6.91    5.58425    19
4.4425    32.8489    6.95    5.58426    20
4.46817    32.9927    6.92    5.5843    21
4.4555    33.1738    6.97    5.58426    22
4.45483    33.3675    6.94    5.58426    23
4.46133    33.5499    6.99    5.58428    24
4.42733    33.7143    6.99    5.58426    25

STAR比对的时间随指定的线程数的变化

  1. 在给定的线程数少于10个时,随着线程数增加时间逐渐减少,尤其是在线程数从1-6的过程中,下降幅度更明显。

  2. 线程也不是越多越好,给定多于10个进程对速度提升基本没有贡献。

    (因为测试电脑只有10个核心,不知道这里的节点10是否是受此影响;

    还需要后续在服务器更多测试来判断;

    如果是这样,对我们的指导是设定的线程数不应该超过CPU的核心数。

library(ImageGP) 、sp_scatterplot(“GRCh38_39517_star_reads_map_thread.summary”, melted = T, xvariable = “nThreads”,               yvariable = “Time_cost”, smooth_method = “auto”,               x_label =”Number of specified threads”, y_label = “Running time (minutes)”) +  scale_x_continuous(breaks=seq(1,25, by=1)) +  scale_y_continuous(breaks=seq(1,25, by=1))

STAR比对所需内存随指定的线程数的变化

  1. 线程数越多,内存需求越大;

    但整体相差不大。

# 这时绘图要注意,是否加limits=c(0,34)图给人的第一印象不同。
sp_scatterplot("GRCh38_39517_star_reads_map_thread.summary", melted = T, xvariable = "nThreads",yvariable = "Memory_cost", smooth_method = "auto",x_label ="Number of specified threads", y_label = "Maximum physical memory required (Gb)") +scale_x_continuous(breaks=seq(1,25, by=1)) +scale_y_continuous(breaks=seq(1,34, by=1),limits=c(0,34))

不加limits=c(0,34)的效果。是不是感觉内存变化很大???

STAR比对过程中CPU利用率随指定的线程数的变化

多线程的效率一般很难达到100%。如下图,在指定线程数小于10时,给定的线程越多,利用起来的线程也越多,但整体利用率是越来越低的。

不同线程是不影响程序输出的

这个统计没什么意义。

sp_scatterplot("GRCh38_39517_star_reads_map_thread.summary", melted = T, xvariable = "nThreads",yvariable = "Output_size", smooth_method = "auto",x_label ="Number of specified threads", y_label = "Disk space usages (Gb)") +scale_x_continuous(breaks=seq(1,25, by=1)) +scale_y_continuous(breaks=seq(0,6, by=1),limits=c(0,6))

往期精品(点击图片直达文字对应教程)

机器学习

后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集


http://www.ppmy.cn/news/485703.html

相关文章

centos下的Nginx的安装

1.Nginx简介 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强。 其他服务器介绍:Apache服务器、Tomcat服务器、Lighttpd服务器 2.nginx依赖安装 yum -y instal…

chrome浏览器inspect打不开解决方案

chrome访问chrome://inspect/#devices后,点击inspect映射手机端webview页面定位元素,报错,空白展示。 解决方法:在edge浏览器里,输入chrome://inspect,跳转到edge://inspect页面,点击了inspect…

电脑连接WiFi 网页打不开 QQ可以登上去

1.打开IE浏览器 2.点击Internet选项 点击按钮 选择这里面的internet选项 3 点击连接 4 点击局域网设置 5 代理服务器下面 为LAN....... 取消勾选 然后按确认

safari浏览器找不到服务器怎么办,safari打不开网页因为服务器已停止响应解决方法...

safari打不开网页因为服务器已停止响应解决方法如下: 1、关闭手机或者苹果设备的wifi再打开了; 2、如果不行的话---设置--wifi一点击你的无线路由一选择忽视此网络一退回一重新查找wifi一输入wifi密码! 3、不要去调无线路由!不是它的问题;是手机上过太多的wifi&…

电脑只能上微信不能打开网页_能上微信不能打开网页

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。 能上微信不能打开网页的原因: 1、是因为电脑的DNS被修改了 DNS(Domain Name System,域名系统),简单地说:就是把输入的网站域名翻译成…

手机怎么打开html游戏,网页游戏打不开怎么解决 网页游戏打不开解决方法

网页游戏打不开怎么解决 ?网页游戏打不开大多数是浏览器出了问题,下面就给大家带来解决方法,一起来看下。 1、ie版本太低 升级的话很容易,如果你装了金山卫士或者360或者qq管家都可以从软件升级中找到。 2、flash版本太低 页游一般都是基于F…

html5页面打不开原因,有网但是网页打不开是什么原因(原因及2种解决方法)

本来刚交了宽带网络信用卡年费,并且本地连接表明一切正常情况,却偏要打开网站一直发生难题,换了电脑浏览器和重新启动都失效,应该怎么办呢?不必担心!下边小编给大伙儿梳理了一些相关网络链接一切正常可是不…

笔记本能连上wifi 但是浏览器打不开,使用手机的热点却可以正常上网的问题?

状况描述:window8.1操作系统,之前无论是连接WiFi还是直插网线都可以,今天来到北京却突然发现连的上 WiFi,却打不开浏览器, 我打开手机热点,笔记本却能好好的正常工作。 处理步骤:整整一天&#…