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

windows做网站服务器吗绍兴专业做网站公司

windows做网站服务器吗,绍兴专业做网站公司,宁波新闻头条最新消息,wordpress 4.0 谷歌字体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://www.yayakq.cn/news/84166/

相关文章:

  • 昆明网站制作在线网站 多服务器
  • 网站运营 开发卓手机建网站
  • o2o网站建设平台长沙服务好的网络营销
  • 电子商务网站建设文档html代码加密
  • 杭州城乡建设网站wordpress主题 google
  • 本地做的网站如何映射出去小红书seo是什么意思
  • 宁波网站建设建站系统wordpress做小说网站
  • 框架网站模板开发游戏软件需要学什么专业
  • 从化做网站深圳做网站乐云seo598
  • 长沙哪家网站建设最好做一个小网站多少钱
  • 一站式服务门户深圳企业网站建设标准
  • 网站建设项目介绍wordpress修改搜索框
  • wordpress4.9.8下载利于seo的建站系统有哪些
  • 用帝国cms做网站wordpress wpgo
  • 大学生简历制作网站宁波做网站费用
  • 建设网站的公司广州网站地图怎么做
  • 公众号里原文单发到dede网站上淄博抖音关键词优化
  • 盗版网站怎么做的北京网站建站推
  • 欧赛网站建设现在主流的网站开发平台有哪些
  • 瓯海建设网站wordpress 页面 按钮
  • 郑州网站营销推广制作图片马
  • 中国林业工程建设协会网站新开传奇网站180合击
  • 好看手机网站推荐上海集团网站建设公司好
  • 农产品电商网站建设的主要工作怎么在网站后台做图片新闻
  • 网站建设服务描述iis 如何搭建网站
  • 阜阳手机网站制作自己创建的网站怎么做流量
  • 中卫网站推广服务企业信息系统的分类
  • wordpress子网站17做网站骗子
  • 政务网站建设规划wordpress 云主机名
  • 一个ip可以建设多少个网站杭州百度人工优化