-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
非阻塞式打包支持 #145
Comments
首先要解决的一个问题是:怎么同时跑多个同一 prefix 的 chroot? |
我猜
是个问题。初步想法是先限制一下并行的数量。比如只允许开2个session,有表A的话可以查,多了就等着。可以解决一部分问题吧。。。 进一步的话可以在lilac.*里写一下预估的资源需求(比如写space_requirement_g=5),如果空间磁盘不够5g就也等着,如果此时表A里是空的那么就可以发out of space的邮件了 |
原来还有这么个选项。那是不是肥猫二号、三号可以下岗了? @felixonmars |
@lilydjwg 我修改版的自动打包脚本今天换上了这个选项,看看有没有什么问题。如果没问题就可以下岗了~ |
感觉应该是 我在想是要改async还是就while等着就行。。。
我们可以先从session上限为1开始试一下。。。 |
我在思考另一种非阻塞的运行方式。然后同时结合一下github actions实现分布式打包 首先需要一个数据库,存
然后lilac改为每若干分钟运行的定时任务,每次运行时
lilac-remote接收参数为一串包下载链接,没有的从repo下,所以本地也是可以直接运行的。 那么并行状态应该是最优的,也没有必须等待上一波lilac都运行完了的问题。 目前就是single_main太弱了,需要做的改进有:
这么看其实别的remote方案也是可以的。。。甚至ssh上去执行都行。。。可能主要就是白嫖了github的20个runner吧。。。 |
改进single_main为lilac-remote我觉得好处也挺多的 大家可以不用配置lilac就能调试lilac.*什么的 然后也有助于淘汰lilac.py |
目前的问题在于没有 build runner 的抽象。 |
一点点来吧。。。 |
想了想我打算基于数据库ORM先写一个Runner类,LocalRunner类,GithubActionsRunner类。 Runner的各种数据都ORM到数据库里,然后新进程也能从数据库恢复Runner出来。虽然最后每个Runner类都会搞出一个表出来不过应该ok吧。。。 LocalRunner会启动一个调用single_main的进程。这个进程就是将来大家本地调试lilac mod的那个,应该就是把lilac_build解藕出来的意思。 我大概明天能初步整一个出来。。。? 有个问题就是用啥ORM比较好。。。 |
记一下:GithubActionsRunner 的 |
1 similar comment
记一下:GithubActionsRunner 的 |
ORM 当然是用 SQLAlchemy 啦。不过我打算先把 Runner 写好,再做数据库的部分。 |
嗯,老migrate也挺麻烦的 |
呃我是不是对Runner的理解出现了偏差。。。 不过说起来我的确没想好哪里配置哪个runner是多少并行 |
嗯……你那个不像是 Runner,而像是 Runnee。我想到 Runner 大概是: class IRunner:
def can_run_task(self) -> float: ...
async def run(self, pkgbase: str) -> Result: ... |
我把原来的Runner挪到BuildJob了,然后新写了一个Runner类。 然后就是我构想的触发打包的进程,和接收打好的包、签名、移交给archrepo的进程不是一个进程,甚至可以不在一个地方。 |
我打算把各种Runner的资源管理什么的通过扔给SGE去做了, Runner 就对应到队列了,应该就不用写了吧。。。 |
SGE 是什么? |
Son of Grid Engine 总之就是某种资源管理器 |
已通过 |
如题。某些奇奇怪怪的包会强制
-j1
,对于这些包感觉没必要让其他核心一直空着。所以在想能不能实现对这些包实行非阻塞,其他仍然是阻塞式。
初步构想的改动如下:
The text was updated successfully, but these errors were encountered: