Open Yikun opened 6 years ago
逸坤你好,想问下你两个SQL语句是通过数据库日志查出来的还是其他什么方式?
啊,好像是通过修改nova.conf中得connection_debug=100和connection_trace=true ?
@zh-f 只需要connection_debug=100就好了,可以参考oslo_db的Configuration Options。
[database]
# (Integer) Verbosity of SQL debugging information: 0=None, 100=Everything.
connection_debug = 100
然后,重启对应的进程,如nova-api,nova-cond。
十分感谢 :smile:
1 功能概述
Placement的一个重要的接口,就是获取满足指定资源条件的allocation。举个例子,用户说,
我需要1个VCPU,512MB内存,1GB磁盘的资源,Placement你帮我找找看看,有没有合适的资源
。用户通过allocation_cadidates接口进行查询,参数是
DISK_GB:1,MEMORY_MB:512,VCPU:1
,随后,Placement自己做了一大堆的查询之后,“告诉”用户:上面就是我查找到的结果:
2 实现详情
2.1 整体流程
整体流程如上图所示
2.2 最简单的例子
下面以一个single reousrce provider(就是说不考虑嵌套、共享之类的)的请求来举个例子:
Step 1. 查询满足条件的resouce provider
此步完成后,就可以拿到满足给定条件的Resource Provider的ID了。
Step 2. 查询满足条件的resouce provider及其对应的总存量、已使用量信息
查询的最终结果如下:
其实我们可以看到,这个接口的作用就是说,用户给一些资源的请求,然后placement就去查,满足条件的resource provider。
当然,作为placement最重要也是最复杂的接口之一,加上嵌套、共享、分组之后,情况变得越来越复杂,但是,核心的实现是差不多的,都是一个套路,join一系列我们需要的信息,然后在where判断这些信息是否满足条件,最后,把满足条件的RP返回给用户。
后续,我也会在分析学习独立的feature(比如Nested Resource Provider、Sharing Resource Provider等),加上此接口的变化点和深入解析。