Skip to content
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

[SPVR-207] fix the issue of calculating storage-request #572

Merged
merged 1 commit into from
Apr 4, 2022

Conversation

DuodenumL
Copy link
Contributor

修复了一个计算storage request / limit的bug。

在申请volume资源的时候,eru会把volume size加到storage request / limit里。例如申请volume_request = "AUTO:/data1:rw:1G",storage_request = 10G,最终调度时候eru会把storage_request 按照11G来计算。

造成bug的原因:
eru在CreateWorkload这个API里允许调用方只传limit,不传request,在validate时检测到这种情况的话就会使request = limit,而不会报错。但是这个validate是在变更storage_request之后进行的。

也就是说,对于下面这个请求:volume_limit = 100G, storage_request = 10G, storage_limit = 10G,eru首先将其变成volume_limit = 100G, storage_request = 10G, storage_limit = 110G,然后validate时再将其变成volume_request = 100G, volume_limit = 100G, storage_request = 10G, storage_limit = 110G

我们期望这里的storage_request应该等于最终的volume_request + storage_request = 100G + 10G = 110G,但是实际上只有10G,这是因为第一步转换的时候volume_request是空的,所以只变化了storage_limit,没有变storage_request。

@DuodenumL
Copy link
Contributor Author

其实还要一种情况没能解决。假设申请了--volume-request AUTO:/data0:rwm:10G --storage-request 10G,对应的node上有一个500G的volume,那么最终的storage-request应当是510G才对,而不是20G。

如果想把这种情况也考虑到的话,只能将volume和storage合并在一起计算,调度的时候先分配volume,然后根据情况调整storage request / limit的值。在这个版本做比较费劲,如果要做的话,可以放在插件化之后,因为插件化里我把volume和storage合起来了。

感觉把这两种资源混合起来计算的做法是有点奇怪的,导致这块的逻辑非常混乱。按照我的理解,这样做应该是为了方便让yavirt计算真实需要的storage,比如:/data:rw:1T就对应1T的storage。不知道有没有办法优化一下这里?

@DuodenumL DuodenumL force-pushed the fix/storage-volume branch from 102bd93 to 6231cb1 Compare April 1, 2022 08:55
@CMGS CMGS merged commit 21ca429 into projecteru2:master Apr 4, 2022
@DuodenumL DuodenumL mentioned this pull request Apr 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants