原文作者:杰罗姆杜巴
原文地址:https://blog.dbi-services.com/oda-migrating-from-bare-metal-to-cpu-pools/
介绍
Oracle 数据库机现在完全支持使用 KVM 进行虚拟化,这对我们中的一些人来说可能很有趣。如果您使用的是企业版,您可能会减少内核数量以符合您的许可证。现在,您可以使用更多核心来增加核心配置,其中一些专用于您的数据库,一些用于用户管理的 VM。让我们了解如何从裸机核心分配迁移到 CPU 池,并发现此功能的可能性。
3种CPU池
在 ODA 上 CPU 池有 3 种类型:
- 裸机:这些是您可以与裸机数据库关联的 CPU 池(必须获得许可)
- 数据库系统:这些是您可以与您的数据库系统关联的 CPU 池(必须获得许可)
- 用户管理的 VM:这些是多用途 VM 的 CPU 池,不需要任何 Oracle 数据库许可
您可以为每种类型定义多个 CPU 池,或者在 ODA 上不定义。
此 CPU 池配置位于您的 CPU 核心配置之上。以前,将许可证与 ODA 匹配的唯一方法是使用 odacli update-cpucore 减少系统上可用的内核数量。现在它更加灵活。
不使用 CPU 池的配置
在不使用 CPU 池的情况下,在 Enterprise Edition 上,需要减少内核以匹配您的许可证。例如,对于我的 ODA X8-2M 上的 2 个 EE 许可证,我需要在部署后将我的可用内核降低到 4 个:
odacli describe-cpucore
Node Cores Modified Job Status
----- ------ ---------------------------------- ---------------
0 32 February 17, 2022 1:55:24 PM CET CONFIGURED
lscpu | grep MHz
CPU MHz: 2799.817
CPU max MHz: 3900.0000
CPU min MHz: 1000.0000
odacli update-cpucore -c 4
Modifying the enabled number of CPU requires a reboot of all nodes in the ODA system. Are you sure you want to proceed with this operation? (Y/N): Y
重启后,检查新的核心配置和 CPU 速度:
odacli describe-cpucore
Node Cores Modified Job Status
----- ------ ---------------------------------- ---------------
0 4 February 18, 2022 4:05:44 PM CET CONFIGURED
lscpu | grep MHz
CPU MHz: 3899.943
CPU max MHz: 3900.0000
CPU min MHz: 1000.0000正如我在另一篇博文中已经告诉你的那样,减少内核可以提高速度,这要归功于 Turbo Boost。只需启用几个内核,您就可以期待 Xeon 的全速运行。
增加核心配置
在我配置了 4 核的 ODA 上,我将首先增加服务器上的核数。根据我的许可证,我只想为数据库保留 4 个核心。
odacli update-cpucore -c 8
Modifying the enabled number of CPU requires a reboot of all nodes in the ODA system. Are you sure you want to proceed with this operation? (Y/N): Y
让我们在重启后检查配置和 CPU 速度:
odacli describe-cpucore
Node Cores Modified Job Status
----- ------ ---------------------------------- ---------------
0 8 February 18, 2022 4:25:11 PM CET CONFIGURED
lscpu | grep MHz
CPU MHz: 3685.555
CPU max MHz: 3900.0000
CPU min MHz: 1000.0000正如预期的那样,我的核心运行速度有点慢。请注意,您不应该减少核心数量。您只能在初始配置后增加它们。根据你的执照,这听起来很明显。
配置和使用 CPU 池
现在让我们为裸机数据库创建一个 CPU 池:
odacli create-cpupool -n cpupool4BM -c 4 -bm
odacli describe-job -i a818a597-a60a-4824-a8e3-85c53d3087e6 | grep Status:
Status: Success让我们将此 CPU 池与我所有的裸机数据库相关联:
odacli list-databases
ID DB Name DB Type DB Version CDB Class Shape Storage Status DbHomeID
---------------------------------------- ---------- -------- -------------------- ---------- -------- -------- ---------- ------------ ----------------------------------------
42656d90-e18e-4325-a69a-13d3a6b58710 DBITST SI 19.13.0.0.211019 true OLTP odb1 ASM CONFIGURED 5e7a146a-c18d-427b-a206-e532ec9907cf
a2193c80-d004-4295-847e-ec8277952bd7 DBTAG38 SI 19.13.0.0.211019 false OLTP odb1 ASM CONFIGURED 5e7a146a-c18d-427b-a206-e532ec9907cf
odacli modify-database -i 42656d90-e18e-4325-a69a-13d3a6b58710 -cp cpupool4BM
DB will be restarted as part of CPU Pool operation. Do you want to continue [y/n]:y
odacli describe-job -i ef4c6aff-c0e2-4493-9500-c3069559157e | grep Status:
Status: Success
odacli modify-database -i a2193c80-d004-4295-847e-ec8277952bd7 -cp cpupool4BM
DB will be restarted as part of CPU Pool operation. Do you want to continue [y/n]:y
odacli describe-job -i c5e73921-619f-48dc-92c4-80be97128a23 | grep Status:
Status: Success让我们为用户管理的虚拟机创建一个 CPU 池:
odacli create-cpupool -n cpupool4VM -c 4 -vm
odacli list-cpupools
Name Type Configured on Cores Associated resources Created Updated
-------------------- ------------------ ------------------------- ----- ------------------------------ ----------------------- -----------------------
cpupool4VM VM dbi-oda-x8 4 NONE 2022-02-18 16:49:53 CET 2022-02-18 16:49:53 CET
cpupool4BM BM dbi-oda-x8 4 DBITST, DBTAG38 2022-02-18 16:39:39 CET 2022-02-18 16:46:32 CET让我们在这个 CPU 池中创建几个 VM:
odacli create-vmstorage -n VMstore -s 100G
odacli create-vm -n srvapp01 -m 8G -src /opt/dbi/AlmaLinux-8.4-x86_64-dvd.iso -vc 2 -cp cpupool4VM -vn pubnet -vms VMstore -s 16G -g "vnc,listen=10.36.0.241"
odacli create-vm -n srvapp02 -m 8G -src /opt/dbi/AlmaLinux-8.4-x86_64-dvd.iso -vc 2 -cp cpupool4VM -vn pubnet -vms VMstore -s 16G -g "vnc,listen=10.36.0.241"
odacli create-vm -n srvapp03 -m 8G -src /opt/dbi/AlmaLinux-8.4-x86_64-dvd.iso -vc 2 -cp cpupool4VM -vn pubnet -vms VMstore -s 16G -g "vnc,listen=10.36.0.241"
odacli list-vms
Name VM Storage Node Current State Target State Created Updated
-------------------- -------------------- --------------- --------------- --------------- ----------------------- -----------------------
srvapp02 VMstore dbi-oda-x8 ONLINE ONLINE 2022-02-18 16:54:15 CET 2022-02-18 16:54:15 CET
srvapp01 VMstore dbi-oda-x8 ONLINE ONLINE 2022-02-18 16:53:45 CET 2022-02-18 16:53:45 CET
srvapp03 VMstore dbi-oda-x8 ONLINE ONLINE 2022-02-18 16:54:32 CET 2022-02-18 16:54:32 CET在这个 4 核 CPU 池上配置 6 个 vCPU 没有问题。
通常我不应该有足够的核心来为数据库系统创建一个池,让我们试试:
odacli create-cpupool -n cpupool4DBS -c 4 -dbs
odacli describe-job -i c0a27a41-469b-4145-bd1d-2bd770aeb5a7
Job details
----------------------------------------------------------------
ID: c0a27a41-469b-4145-bd1d-2bd770aeb5a7
Description: CPU Pool cpupool4DBS creation
Status: Failure
Created: February 18, 2022 4:55:45 PM CET
Message: DCS-10001:Internal error encountered: Not enough physical CPUs available for CPU Pool 'cpupool4DBS' on node 'dbi-oda-x8'.
Task Name Start Time End Time Status
---------------------------------------- ----------------------------------- ----------------------------------- ----------
Validate CPU Pool doesn't exist February 18, 2022 4:55:45 PM CET February 18, 2022 4:55:45 PM CET Success
Validate NUMA state February 18, 2022 4:55:45 PM CET February 18, 2022 4:55:45 PM CET Success
Create metadata February 18, 2022 4:55:45 PM CET February 18, 2022 4:55:45 PM CET InternalError正确的。这是不可能的。
由于我不想添加更多许可证,让我们减少裸机 CPU 池上的内核。我将在 BM 和 DBS 之间共享我的 2 个许可证:
odacli modify-cpupool -n cpupool4BM -c 2
WARNING: Must restart the following Oracle Databases associated with CPU Pool 'cpupool4BM' for the update to take effect: DBITST,DBTAG38
odacli describe-job -i 259d7fe1-afba-450f-beca-5410a5993160 | grep Status:
Status: Success
odacli create-cpupool -n cpupool4DBS -c 2 -dbs
odacli describe-job -i f595cae9-fc00-4055-89e2-218d12307b06 | grep Status:
Status: Success我现在可以使用这个 CPU 池创建一些数据库系统:
grep pool /opt/dbi/create_dbsystem_srvdb4*.json
/opt/dbi/create_dbsystem_srvdb47.json: "cpuPoolName": "cpupool4DBS",
/opt/dbi/create_dbsystem_srvdb48.json: "cpuPoolName": "cpupool4DBS",
/opt/dbi/create_dbsystem_srvdb49.json: "cpuPoolName": "cpupool4DBS",
odacli create-dbsystem -p /opt/dbi/create_dbsystem_srvdb47.json
odacli create-dbsystem -p /opt/dbi/create_dbsystem_srvdb48.json
odacli create-dbsystem -p /opt/dbi/create_dbsystem_srvdb49.json
odacli list-dbsystems
Name Shape Cores Memory GI version DB version Status Created Updated
-------------------- ---------- ----- ---------- ------------------ ------------------ --------------- ----------------------- -----------------------
srvdb47 odb2 2 16.00 GB 19.13.0.0.211019 19.13.0.0.211019 CONFIGURED 2022-02-22 17:40:42 CET 2022-02-22 18:13:44 CET
srvdb49 odb2 2 16.00 GB 19.13.0.0.211019 19.13.0.0.211019 CONFIGURED 2022-02-22 16:27:54 CET 2022-02-22 16:58:43 CET
srvdb48 odb2 2 16.00 GB 19.13.0.0.211019 19.13.0.0.211019 CONFIGURED 2022-02-22 15:53:25 CET 2022-02-22 16:23:22 CET
odacli list-cpupools
Name Type Configured on Cores Associated resources Created Updated
-------------------- ------------------ ------------------------- ----- ------------------------------ ----------------------- -----------------------
cpupool4VM VM dbi-oda-x8 4 srvapp02, srvapp01, srvapp03 2022-02-18 16:49:53 CET 2022-02-18 16:49:53 CET
cpupool4BM BM dbi-oda-x8 2 DBITST, DBTAG38 2022-02-18 16:39:39 CET 2022-02-18 16:58:21 CET
cpupool4DBS DB_SYSTEM_SHARED dbi-oda-x8 2 srvdb47, srvdb49, srvdb48 2022-02-18 16:59:34 CET 2022-02-18 16:59:34 CET
如您所见,在 2 核 CPU 池上配置多个数据库系统没有问题,因为在 2 核 CPU 池上配置 10 个裸机数据库没有问题。
另一个有趣的事情是您可以定义多个每种类型的 CPU 池。例如,如果您想将核心专用于特定的裸机数据库,您只需要创建一个新的裸机池(这里我还需要减少另一个池以释放 2 个核心——这将花费我 1 个 EE 许可证) :
odacli modify-cpupool -n cpupool4VM -c 2
odacli create-cpupool -n cpupool4BMPROD -c 2 -bm
odacli modify-database -i a2193c80-d004-4295-847e-ec8277952bd7 -cp cpupool4BMPROD
odacli list-cpupools
Name Type Configured on Cores Associated resources Created Updated
-------------------- ------------------ ------------------------- ----- ------------------------------ ----------------------- -----------------------
cpupool4VM VM dbi-oda-x8 2 srvapp02, srvapp01, srvapp03 2022-02-18 16:49:53 CET 2022-02-22 18:38:39 CET
cpupool4BMPROD BM dbi-oda-x8 2 DBTAG38 2022-02-22 18:39:20 CET 2022-02-22 18:41:07 CET
cpupool4BM BM dbi-oda-x8 2 DBITST 2022-02-18 16:39:39 CET 2022-02-22 18:41:06 CET
cpupool4DBS DB_SYSTEM_SHARED dbi-oda-x8 2 srvdb47, srvdb49, srvdb48 2022-02-18 16:59:34 CET 2022-02-18 16:59:34 CET
结论
CPU 池是 ODA 的绝佳补充。它就像一个魅力。由于这仍然与内核缩减兼容,您还可以从高 CPU 内核速度和负载隔离中受益。太棒了!




