暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

【译】ODA:从裸机迁移到 CPU 池

原创 剩余价值 2022-05-12
1107

原文作者:杰罗姆杜巴

原文地址: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 内核速度和负载隔离中受益。太棒了!

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论