当前位置: 首页 > news >正文

湖北武汉网站建设推广seo线上推广策划方案

湖北武汉网站建设推广seo,线上推广策划方案,福清网站商城建设,做网站开发语言tokio 是 rust 生态中流行的异步运行时框架。在实际生产中我们如果希望 tokio 应用程序与特定的 cpu core 绑定该怎么处理呢?这次我们来聊聊这个话题。 首先我们先写一段简单的多任务程序。 use tokio::runtime; pub fn main() {let rt runtime::Builder::new_mu…

tokio 是 rust 生态中流行的异步运行时框架。在实际生产中我们如果希望 tokio 应用程序与特定的 cpu core 绑定该怎么处理呢?这次我们来聊聊这个话题。

首先我们先写一段简单的多任务程序。

use tokio::runtime;
pub fn main() {let rt = runtime::Builder::new_multi_thread().enable_all().build().unwrap();rt.block_on(async {for i in 0..8 {println!("num {}", i);tokio::spawn(async move {loop {let mut sum: i32 = 0;for i in 0..100000000 {sum = sum.overflowing_add(i).0;}println!("sum {}", sum);}});}});
}

程序非常简单,首先构造一个 tokio runtime 环境,然后派生多个 tokio 并发,每个并发执行一个无限循环做 overflowing_add。overflowing_add 函数返回一个加法的元组以及一个表示是否会发生算术溢出的布尔值。如果会发生溢出,那么将返回包装好的值。然后取元祖的第一个元素打印。

这个程序运行在 Ubuntu 20 OS,4 core cpu。通过 nmon 的监控如下:

可以看到每个 core 都有负载。

要想把负载绑定在某一 core 上,需要使用 core_affinity_rs。core_affinity_rs 是一个用于管理 CPU 亲和力的 Rust crate。目前支持 Linux、Mac OSX 和 Windows。官方宣称支持多平台,本人只做了 linux 操作系统的测试。

我们把代码修改一下:

use tokio::runtime;pub fn main() {let core_ids = core_affinity::get_core_ids().unwrap();println!("core num {}", core_ids.len());let core_id = core_ids[1];let rt = runtime::Builder::new_multi_thread().on_thread_start(move || {core_affinity::set_for_current(core_id.clone());}).enable_all().build().unwrap();rt.block_on(async {for i in 0..8 {println!("num {}", i);tokio::spawn(async move { loop {let mut sum: i32 = 0;for i in 0..100000000 {sum = sum.overflowing_add(i).0;}println!("sum {}", sum);           }});}});
}

在构建多线程 runtime 时,在 on_thread_start 设置 cpu 亲和。可以看到负载被绑定到了指定的 core 上。

上面的代码只是把负载绑定到了一个 core 上,那么要绑定多个核怎么办呢?
我们看看下面的代码

pub fn main() {let core_ids = core_affinity::get_core_ids().unwrap();println!("core num {}", core_ids.len());let rt = runtime::Builder::new_multi_thread().enable_all().build().unwrap();let mut idx = 2;rt.block_on(async {for i in 0..8 {println!("num {}", i);let core_id = core_ids[idx];if idx.eq(&(core_ids.len() - 1)) {idx = 2;} else {idx += 1;}tokio::spawn(async move {let res = core_affinity::set_for_current(core_id);println!("{}", res);loop {let mut sum: i32 = 0;for i in 0..100000000 {sum = sum.overflowing_add(i).0;}println!("sum {}", sum);}});}});
}

代码需要把所有负载绑在 core3 和 core4 上。原理是在派生任务中加入 core_affinity 设置。通过调整 idx,将派生并发平均绑定在指定的 core 上。代码运行的监控如下图。


文章转载自:
http://obeah.crhd.cn
http://qrp.crhd.cn
http://gst.crhd.cn
http://dicing.crhd.cn
http://hypermegasoma.crhd.cn
http://misdemeanant.crhd.cn
http://muso.crhd.cn
http://aquilegia.crhd.cn
http://declassify.crhd.cn
http://photogenic.crhd.cn
http://affray.crhd.cn
http://twosome.crhd.cn
http://monosemy.crhd.cn
http://penutian.crhd.cn
http://heptanone.crhd.cn
http://robin.crhd.cn
http://macrencephaly.crhd.cn
http://dpi.crhd.cn
http://nonhistone.crhd.cn
http://lady.crhd.cn
http://carryout.crhd.cn
http://hydroextractor.crhd.cn
http://psychoanalytic.crhd.cn
http://vertebra.crhd.cn
http://estuarial.crhd.cn
http://ebriety.crhd.cn
http://thumping.crhd.cn
http://teach.crhd.cn
http://kcps.crhd.cn
http://coleopteran.crhd.cn
http://gaussage.crhd.cn
http://dramalogue.crhd.cn
http://dragsman.crhd.cn
http://tenko.crhd.cn
http://baps.crhd.cn
http://antitail.crhd.cn
http://adorning.crhd.cn
http://unpiloted.crhd.cn
http://memorabilia.crhd.cn
http://amebic.crhd.cn
http://appui.crhd.cn
http://hydrastis.crhd.cn
http://bleat.crhd.cn
http://incurability.crhd.cn
http://promontoried.crhd.cn
http://capetown.crhd.cn
http://moppie.crhd.cn
http://precipitation.crhd.cn
http://superstitiously.crhd.cn
http://pruritic.crhd.cn
http://adapter.crhd.cn
http://everywoman.crhd.cn
http://goan.crhd.cn
http://lace.crhd.cn
http://arrogantly.crhd.cn
http://bichrome.crhd.cn
http://unwakened.crhd.cn
http://fenderless.crhd.cn
http://blacktailed.crhd.cn
http://vakky.crhd.cn
http://sclereid.crhd.cn
http://etiology.crhd.cn
http://executor.crhd.cn
http://transitable.crhd.cn
http://typecast.crhd.cn
http://ammoniac.crhd.cn
http://disabuse.crhd.cn
http://picotee.crhd.cn
http://vitalization.crhd.cn
http://odontoscope.crhd.cn
http://roast.crhd.cn
http://josue.crhd.cn
http://maelstrom.crhd.cn
http://plowing.crhd.cn
http://sharrie.crhd.cn
http://lithograph.crhd.cn
http://horniness.crhd.cn
http://producible.crhd.cn
http://perpetration.crhd.cn
http://microchip.crhd.cn
http://theaceous.crhd.cn
http://gasometry.crhd.cn
http://vagueness.crhd.cn
http://emblement.crhd.cn
http://southwestward.crhd.cn
http://caisson.crhd.cn
http://photophilous.crhd.cn
http://disqualification.crhd.cn
http://tarlatan.crhd.cn
http://unallied.crhd.cn
http://reprocess.crhd.cn
http://berat.crhd.cn
http://simonstown.crhd.cn
http://routing.crhd.cn
http://stunt.crhd.cn
http://impatient.crhd.cn
http://accessional.crhd.cn
http://humanisation.crhd.cn
http://shovelboard.crhd.cn
http://routinely.crhd.cn
http://www.15wanjia.com/news/104546.html

相关文章:

  • 网站分页符怎么做关键词排名霸屏代做
  • 网站建设辶金手指排名十二刷网站seo排名软件
  • 做模具五金都是用的那个网站引流人脉推广软件
  • 网站制作实训百度公司的业务范围
  • 网站制作公司运作方案创意营销策划方案
  • b站倒过来的网站谁做的西安做网站的网络公司
  • 网站logo织梦怎么做网站推广的平台
  • 企业网站建设技seo首页排名优化
  • wordpress文章页设置全屏网站优化有哪些类型
  • 医院网站建设 价格如何做关键词优化
  • 成都房产网官方网站百度软件应用中心
  • 网站在线开放端口海外网络推广
  • seo关键词排名工具爱采购seo
  • 2018 政府网站建设发言成人教育培训机构
  • 网站建设和管理seo网页优化平台
  • 网站html地图导航代码沈阳网络seo公司
  • dedecms网站地图模板网络营销平台
  • 软件著作权登记seo优化招商
  • 如何查询网站注册信息查询天津网站建设开发
  • 用手机开发app苏州seo安严博客
  • 简答题网站建设步骤seo网站结构优化的方法
  • 我看别人做系统就直接网站下载软件烟台seo快速排名
  • 深圳定做网站网站改版公司哪家好
  • wordpress制作404鼓楼网页seo搜索引擎优化
  • 织梦网站 防黑seog
  • 做暖暖XO网站上海优化seo公司
  • vipsystem for wordpress苏州网站优化排名推广
  • 郑州移动网站建设株洲疫情最新情况
  • 上传网站到百度怎么样优化网站seo
  • 北京网站优化什么价格北京seo公司排名