Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在繁忙的构建节点上通过NFS托管Yocto SSTATE_MIRROR --这是个坏主意吗?

在繁忙的构建节点上通过NFS托管Yocto SSTATE_MIRROR --这是个坏主意吗?
EN

Stack Overflow用户
提问于 2021-02-12 16:28:41
回答 1查看 1.3K关注 0票数 0

在分布式yocto构建环境中,在NFS上的繁忙构建节点上托管全局sstate缓存(通过SSTATE_MIRRORS)是不是一个坏主意?

我最近在yocto构建配置中引入了SSTATE_MIRRORS,以进一步减少yocto构建在“构建节点”上的时间( vSphere和开发人员工作站中的Jenkins代理)。按照手册,如果没有在本地sstate缓存(SSTATE_DIR)中找到已经构建的工件,约克托将搜索它们。

所有构建节点都有一个本地SSTATE_DIR,它们在其中缓存生成结果。其中一个构建节点(第一个Jenkins代理)被指定为“全局缓存的守护者”,并将其本地SSTATE_DIR导出为r/ of共享。其他构建节点挂载它,并通过SSTATE_MIRRORS在其构建配置中引用它。我以为我在这里有个好主意,拍了拍自己的背。

唉,我看到在进行更改之后,构建时间有了显著的增加。

当然,在得出任何结论之前,我有很多疑难解答和测量工作要做。我们使用的是NFS v4,并且肯定会在那里进行调优。此外,我怀疑承载NFS共享的构建节点间歇性地非常繁忙地执行yocto构建自身(填充它的混合本地/全局缓存),为内核留下很少的CPU周期来管理NFS请求。

我想知道其他人是否可以根据自己的经验提供建议,实现共享的yocto sstate缓存。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-13 11:51:08

很难确切地说你看到了一些分析数据的问题,但是我有一些观察和建议。

您在正确的轨道上使用NFS作为CI节点之间的sstate缓存,但我建议再走一步。与其让一个节点作为sstate缓存的“守护者”,让所有其他节点使用它作为镜像,我建议让每个节点将公共NFS共享直接挂载为SSTATE_DIR。这允许所有节点在构建过程中读取和写入缓存,并且在更新所需的sstate对象方面做得更好。如果只有一个节点填充缓存,则不太可能包含其他构建所需的所有对象。

此外,我建议NFS服务器是一个持久服务器,而不是绑定到Jenkins代理。这给你带来了一些好处:

  1. 这意味着您可以将硬件资源专用于缓存,而不必让它们与正在进行的Jenkins构建竞争。
  2. 您可以放置一个简单的HTTP服务器前端,为缓存文件提供服务。这样做可以让您的开发人员工作站将该HTTP服务器设置为他们的SSTATE_MIRROR,从而直接受益于您的Jenkins节点产生的缓存。如果您这样做是正确的,开发人员应该能够复制以前由Jenkins完全从sstate构建的构建,这可以节省大量的本地构建时间。即使您没有完全复制Jenkins以前做过的构建,您仍然可以从sstate中提取大量的数据。

最后要检查的是是否启用了哈希等价。哈希等价是一种构建加速技术,它允许bitbake检测元数据何时更改到通常会导致其重新构建的配方,从而产生与以前构建的sstate对象相同的输出,而不是从sstate构建它。默认情况下,从Yocto3.0 (codename )开始启用此功能。如果基础结构中没有运行哈希等效服务器,bitbake将在构建期间启动本地服务器。但是,在像Jenkins节点这样的分布式环境中工作时,这可能会导致一些问题,因为哈希等价性很大程度上取决于sstate缓存的内容。如果每个节点在本地运行它自己的哈希等价服务器,则它们可以得到发散的sstate散列(特别是当CI节点是瞬态的,而本地的哈希等价数据库丢失时),这可能导致更多的sstate丢失。解决方案是要么运行一个哈希等效服务器(bitbake附带一个)并将所有CI节点指向它,要么通过设置:BB_SIGNATURE_HANDLER = "OEBasicHash"完全禁用哈希等价。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66180757

复制
相关文章
SpringBoot中JPA的基本使用
JPA(Java Persistence API)是Java的持久化API,用于对象的持久化。它是一个非常强大的ORM持久化的解决方案,免去了使用JDBCTemplate 开发的编写脚本工作。JPA通过简单约定好接口方法的规则自动生成相应的 JPQL 语句,然后映射成 POJO 对象。
砒霜拌辣椒
2023/08/23
1.4K0
SpringBoot中JPA的基本使用
Spring Boot JPA 中transaction的使用
transaction是我们在做数据库操作的时候不能回避的一个话题,通过transaction,我们可以保证数据库操作的原子性,一致性,隔离性和持久性。
程序那些事
2020/07/08
2.3K0
Spring Boot JPA中关联表的使用
本文中,我们会将会通过一个Book和Category的关联关系,来讲解如何在JPA中使用。
程序那些事
2020/07/08
2.2K0
使用JPA中@Query 注解实现update 操作
使用JPA中@Query 注解实现update 操作,代码如下: @Transactional @Modifying(clearAutomatically = true) @Query(value =
hbbliyong
2018/03/06
1.3K0
使用JPA中@Query 注解实现update 操作
spring使用jpa进行update操作主要有两种方式: 1、调用保存实体的方法 1)保存一个实体:repository.save(T entity) 2)保存多个实体:repository.save(Iterable<T> entities) 3)保存并立即刷新一个实体:repository.saveAndFlush(T entity) 注:若是更改,entity中必须设置了主键字段,不然不能对应上数据库中的记录,变成新增(数据库自动生成主键)或报错(数据库不自动生成主键)了 2、@Query注解,自己
hbbliyong
2018/03/06
2.3K0
JPA 中 sql 预编译 -- EntityManager 使用 预编译
实现方式 : 1. 注入em: @PersistenceContext private EntityManager entityManager; 注入方式 2: @PersistenceUnit private EntityManagerFactory emf; 2. 得到em: private EntityManager getEm() { return this.entityManager; } 对应第2种注入方式: /** * 得EntityM
微风-- 轻许--
2022/04/13
7550
【Google Play】从 Android 应用中跳转到 Google Play 中 ( 跳转代码示例 | Google Play 页面的链接格式 | Google Play 免安装体验 )
首先 , 创建 Intent , 设置其 Action 为 “android.intent.action.VIEW” ,
韩曙亮
2023/03/30
6.3K0
ExtJS中的全局变量的保存和使用
前阵子研究ExtJS,对于如何在Sencha Architect软件中使用全局变量伤透了脑筋。现在我一共发现了两种:
提莫队长
2019/03/01
2.4K0
ExtJS中的全局变量的保存和使用
JPA实体类中的注解
@Entity   标注于实体类上,通常和@Table是结合使用的,代表是该类是实体类 @Table   标注于实体类上,表示该类映射到数据库中的表,没有指定名称的话就表示与数据库中表名为该类的简单类名的表名相对应,如果是逆向生成表的话就会以简单类名作为表名   如果指定名称,例如@Table(name="tb_user"),就表示映射到数据库中的tb_userz这个表; @Id   标注于属性上,通常是在get方法上,也可以在属性的声明上。   用于表示该属性作为ID主键 @GeneratedValue
二十三年蝉
2018/03/29
4.1K0
工作流中的数据持久化详解!Activiti框架中JPA的使用分析
上面的例子展示了JPA结合Spring和参数化方法表达式的强大优势 :所有的流程就不需要自定义java代码(Spring bean除外),大幅度的加快了流程部署
攻城狮Chova
2022/01/22
1.9K0
工作流中的数据持久化详解!Activiti框架中JPA的使用分析
迈外迪CEO张程:在商业中,可供参考的数据大约只有总数的30%
迈外迪CEO张程:在商业中,可供参考的数据大约只有总数的30%
数据猿
2018/04/25
1.1K0
迈外迪CEO张程:在商业中,可供参考的数据大约只有总数的30%
javascript中的后退和刷新
<input type=button value=刷新 onclick=”window.location.reload()”> <input type=button value=前进 onclick=”window.history.go(1)”> <input type=button value=后退 onclick=”window.history.go(-1)”> <input type=button value=前进 onclick=”window.history.forward()”> <input type=button value=后退 onclick=”window.history.back()”> 后退+刷新<input type=button value=后退 onclick=”window.history.go(-1);window.location.reload()”>在C# Web程序中,如为页面按钮写返回上一页代码
全栈程序员站长
2022/09/06
9510
spring data jpa @Query注解中delete语句报错 : @Modifying注解的使用spring data jpa @Query注解中delete语句报错
spring data jpa @Query注解中delete语句报错 项目中需要删除掉表中的一些数据 @Query("delete from EngineerServices es where es
一个会写诗的程序员
2018/08/17
2.1K0
Sequence在Oracle中的使用
  Oracle中,当需要建立一个自增字段时,需要用到sequence。sequence也可以在mysql中使用,但是有些差别,日后再补充,先把oracle中sequence的基本使用总结一下,方便日后查阅。
庞小明
2018/08/01
5.5K0
Transformer 在RxJava中的使用
Transformer,顾名思义是转换器的意思。早在 RxJava1.x 版本就有了Observable.Transformer、Single.Transformer和Completable.Transformer,在2.x版本中变成了ObservableTransformer、SingleTransformer、CompletableTransformer、FlowableTransformer和MaybeTransformer。其中,FlowableTransformer和MaybeTransformer是新增的。由于 RxJava2 将Observable拆分成 Observable 和 Flowable,所以多了一个FlowableTransformer。同时,Maybe是 RxJava2 新增的一个类型,所以多了MaybeTransformer。
fengzhizi715
2018/08/24
8K0
Transformer 在RxJava中的使用
iptables在centos中的使用
yum install -y iptables && yum install -y iptables-services
93年的老男孩
2019/12/18
11.2K0
XML 在SQLServer中的使用
SQL Server对于XML支持的核心在于XML数据的格式,这种数据类型可以将XML的数据存储于数据库的对象中,比如variables, columns, and parameters。当你用XML数据类型配置这些对象中的一个时,你指定类型的名字就像你在SQLServer 中指定一个类型一样。 XML的数据类型确保了你的XML数据被完好的构建保存,同时也符合ISO的标准。在定义一个XML数据类型之前,我们首先要知道它的几种限制,如下: 一个实例的XML列不能包含超过2GB的数据。 一个XML的列不能是索引
用户1217611
2018/01/30
7.9K0
Dotenv在nestjs中的使用
Dotenv 是一个零依赖的模块,它能将环境变量中的变量从 .env 文件加载到 process.env 中。
挥刀北上
2021/12/20
17.2K1
Dotenv在nestjs中的使用
PageHelper在springboot中的使用
使用PageHelper.startPage 静态方法调用startPage : 特点:
知识浅谈
2021/03/03
4.1K0
点击加载更多

相似问题

在Play Framework1.x/ JPA中使用" in“构建查询有更简单的方法吗?

15

使用Play Framework1.x,如何让JPA在生产模式下创建缺少的DB表?

11

Play Framework1.x webfonts CORs问题

17

JPA在刷新之前保存瞬态实例

11

使用@AllowFeature方法的Play Framework1.x函数测试

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档