【问题实操】银河高级服务器操作系统实例分享,开机之后反复重启

1.服务器环境以及配置

物理机/虚拟机/云/容器

物理机

外网/私有网络/无网络

私有网络

处理器:

 PHYTIUM FT2000PLUS 2200 MHz

内存:

 128 GiB

整机类型/架构:

HIKVISION DS-V

BIOS版本:

HK 601FBE02HK

网卡:

mlx5_core v5.0-0 / fw 14.29.2002 (MT_2420110004)

具体操作系统版本

(7860) Kylin-Server-V10-SP3-General-Release-2303-arm64

内核版本

4.19.90-52.22.v2207.ky10.aarch64

2.问题现象描述

服务器开机之后反复重启,用户现场已经收集了日志,需要分析日志。

3.问题分析

3.1 查看系统环境

cat ./sos_commands/networking/ethtool_-i_enp6s0f1
driver: mlx5_core
version: 5.0-0
firmware-version: 14.29.2002 (MT_2420110004)
expansion-rom-version:
bus-info: 0000:06:00.1
supports-statistics: yes
supports-test: yes
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: yes

3.2 vmcore-dmesg分析

分析127.0.0.1-2023-09-19-07:58:37的vmcore-dmesg

[1865270.773139] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865271.773142] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865272.773093] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865273.773195] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865274.773168] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865275.773147] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865276.773151] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865277.773127] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865278.773147] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865279.773174] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865280.773149] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865281.773120] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865282.773112] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865283.773139] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865284.773150] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865285.773097] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865286.773067] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry
[1865287.773095] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1026764): failed to allocate command entry

分析127.0.0.1-2023-10-29-14:17:27的vmcore-dmesg

[3478639.193325] mlx5_core 0000:06:00.0: wait_func:1034:(pid 4068733): MODIFY_CQ(0x403) timeout. Will cause a leak of a command resource
[3478639.193333] mlx5_core 0000:06:00.0: wait_func:1034:(pid 4166044): MODIFY_CQ(0x403) timeout. Will cause a leak of a command resource
[3478639.193334] mlx5_core 0000:06:00.0: wait_func:1034:(pid 2812292): MODIFY_CQ(0x403) timeout. Will cause a leak of a command resource
[3478639.193342] mlx5_core 0000:06:00.0: wait_func:1034:(pid 3401828): MODIFY_CQ(0x403) timeout. Will cause a leak of a command resource
[3478639.193344] mlx5_core 0000:06:00.0: wait_func:1034:(pid 3822606): MODIFY_CQ(0x403) timeout. Will cause a leak of a command resource
[3478639.193354] mlx5_core 0000:06:00.0: wait_func:1034:(pid 188898): MODIFY_CQ(0x403) timeout. Will cause a leak of a command resource
[3478639.193363] mlx5_core 0000:06:00.0: wait_func:1034:(pid 3288787): MODIFY_CQ(0x403) timeout. Will cause a leak of a command resource
[3478639.194469] mlx5_core 0000:06:00.0: wait_func:1038:(pid 192618): MODIFY_CQ(0x403) canceled on out of queue timeout.
[3478639.194487] mlx5_core 0000:06:00.0: wait_func:1038:(pid 192616): MODIFY_CQ(0x403) canceled on out of queue timeout.
[3478639.194495] mlx5_core 0000:06:00.0: wait_func:1038:(pid 192615): MODIFY_CQ(0x403) canceled on out of queue timeout.
[3478639.194505] mlx5_core 0000:06:00.0: wait_func:1038:(pid 192613): MODIFY_CQ(0x403) canceled on out of queue timeout.
[3478639.194515] mlx5_core 0000:06:00.0: wait_func:1038:(pid 192610): MODIFY_CQ(0x403) canceled on out of queue timeout.
[3478640.183135] mlx5_core 0000:06:00.0: cmd_work_handler:906:(pid 1268656): failed to allocate command entry

从日志可见,不断打印failed to allocate command entry,可见该打印来自于drivers/net/ethernet/mellanox/mlx5/core/cmd.c文件的cmd_work_handler函数。

分析异常打印时的函数调用流程如下所示:

-> mlx5_cmd_exec
 -> cmd_exec
  -> mlx5_cmd_invoke
   -> cmd_work_handler
    -> alloc_ent
     -> find_first_bit

static int alloc_ent(struct mlx5_cmd *cmd)
{
    unsigned long flags;
    int ret;

    spin_lock_irqsave(&cmd->alloc_lock, flags);
    ret = find_first_bit(&cmd->bitmask, cmd->max_reg_cmds);
    if (ret < cmd->max_reg_cmds)
        clear_bit(ret, &cmd->bitmask);
    spin_unlock_irqrestore(&cmd->alloc_lock, flags);

    return ret < cmd->max_reg_cmds ? ret : -ENOMEM;
}

/*
 * Find the first set bit in a memory region.
 */
unsigned long find_first_bit(const unsigned long *addr, unsigned long size)
{
    unsigned long idx;

    for (idx = 0; idx * BITS_PER_LONG < size; idx++) {
        if (addr[idx])
            return min(idx * BITS_PER_LONG + __ffs(addr[idx]), size);
    }

    return size;
}

static void free_ent(struct mlx5_cmd *cmd, int idx)
{
    unsigned long flags;

    spin_lock_irqsave(&cmd->alloc_lock, flags);
    set_bit(idx, &cmd->bitmask);
    spin_unlock_irqrestore(&cmd->alloc_lock, flags);
}

从上述代码可见,通过cmd->bitmask进行标记是否有还可以申请,cmd->bitmask的初始化如下,假设获取出来的cmd->log_sz=0x80,则cmd->max_reg_cmds=0xFF,cmd->bitmask=0x1FD。应该是cmd->bitmask初始化的时候有多少bit位为1,就可以alloc_ent多少次。

int mlx5_cmd_init(struct mlx5_core_dev *dev)
{
    int size = sizeof(struct mlx5_cmd_prot_block);
    int align = roundup_pow_of_two(size);
    struct mlx5_cmd *cmd = &dev->cmd;
    u32 cmd_h, cmd_l;
    u16 cmd_if_rev;
    int err;
    int i;

    memset(cmd, 0, sizeof(*cmd));
    cmd_if_rev = cmdif_rev(dev);
    if (cmd_if_rev != CMD_IF_REV) {
        dev_err(&dev->pdev->dev,
            "Driver cmdif rev(%d) differs from firmware's(%d)\n",
            CMD_IF_REV, cmd_if_rev);
        return -EINVAL;
    }

    cmd->pool = dma_pool_create("mlx5_cmd", &dev->pdev->dev, size, align, 0);
    if (!cmd->pool)
        return -ENOMEM;
    err = alloc_cmd_page(dev, cmd);
    if (err)
        goto err_free_pool;

    cmd_l = ioread32be(&dev->iseg->cmdq_addr_l_sz) & 0xff;
    cmd->log_sz = cmd_l >> 4 & 0xf;
    cmd->log_stride = cmd_l & 0xf;
    if (1 << cmd->log_sz > MLX5_MAX_COMMANDS) {
        dev_err(&dev->pdev->dev, "firmware reports too many outstanding commands %d\n",
            1 << cmd->log_sz);
        err = -EINVAL;
        goto err_free_page;
    }

    if (cmd->log_sz + cmd->log_stride > MLX5_ADAPTER_PAGE_SHIFT) {
        dev_err(&dev->pdev->dev, "command queue size overflow\n");
        err = -EINVAL;
        goto err_free_page;
    }

    cmd->checksum_disabled = 1;
    cmd->max_reg_cmds = (1 << cmd->log_sz) - 1;
    cmd->bitmask = (1UL << cmd->max_reg_cmds) - 1;

执行cmd_exec的时候,会去调用alloc_ent,找到cmd->bitmask中最近为1的位,并调用clear_bit清除为0;cmd传到固件执行完以后,要去释放command entry,调用free_ent,将对应位重新标志为1。所以出现问题,有两种可能性:

1、当cmd在传到固件,一直未能执行完,而一直有cmd_exec执行,被积压,导致cmd->bitmask的位使用完,cmd->bitmask所有位被置为了0。alloc_ent无法申请到cmd->bitmask中的标识位。

2、cmd_exec执行完后,由于某种原因,没能调用free_ent,导致cmd->bitmask的所有位被使用完。

3.3 vmcore分析

日志中提示Internal error: SP/PC alignment exception,PC寄存器出现了未对齐的打印。

[3478640.184122] Internal error: SP/PC alignment exception: 8a000000 [#1] SMP
[3478640.184720] Modules linked in: fuse tun bridge stp llc fccore(POE) fchook(OE) bonding ip_set_hash_ip ip_set nfnetlink rfkill ipmi_ssif vfat fat rpcrdma sunrpc rdma_ucm ib_srpt ib_isert iscsi_target_mod target_core_mod ib_iser rdma_cm ib_umad iw_cm ib_ipoib libiscsi scsi_transport_iscsi ib_cm mlx5_ib joydev ib_uverbs ib_core ipmi_si ipmi_devintf ipmi_msghandler sch_fq_codel mlx5_core megaraid_sas igb ast mlxfw dm_mirror dm_region_hash dm_log [last unloaded: ip_tables]
[3478640.188127] Process kworker/u128:0 (pid: 1268656, stack limit = 0x0000000074e0af67)
[3478640.188820] CPU: 15 PID: 1268656 Comm: kworker/u128:0 Kdump: loaded Tainted: P           OE     4.19.90-52.22.v2207.ky10.aarch64 #1
[3478640.189835] Source Version: 52f32c50138f4eec54ab90ce9775f0d75e1d6968
[3478640.190505] Hardware name: HIKVISION DS-V/N/A, BIOS 601FBE02HK 2020/04/20
[3478640.191173] Workqueue: mlx5_cmd_0000:06:00.0 cmd_work_handler [mlx5_core]
[3478640.191790] pstate: 40000005 (nZcv daif -PAN -UAO)
[3478640.192235] pc : 0x42
[3478640.192539] lr : cmd_work_handler+0x434/0x578 [mlx5_core]
[3478640.193029] sp : ffffda857e113d20
[3478640.193348] x29: ffffda857e113d20 x28: ffffda8553b4c400
[3478640.193838] x27: 0000000000000000 x26: ffff5607dffd1000
[3478640.194341] x25: 0000000000000000 x24: ffffda8511e001c8
[3478640.194830] x23: ffffda8511e000e0 x22: ffffda8511e00160
[3478640.195345] x21: ffffda8553b4c548 x20: 0000000000000001
[3478640.195840] x19: ffffda8511e001d8 x18: 0000000000000001
[3478640.196332] x17: 0000fffc58585308 x16: ffff5607def87070
[3478640.196812] x15: ffffffffffffffff x14: 742064656c696166
[3478640.197283] x13: 203a293635363836 x12: 323120646970283a
[3478640.197769] x11: 3630393a72656c64 x10: ffff5607dffd5b70
[3478640.198278] x9 : 5f646d63203a302e x8 : ffff5607deee95d8
[3478640.198769] x7 : ffff5607e07230f8 x6 : 000000000000056b
[3478640.199307] x5 : 0000000000000000 x4 : 0000000000000000
[3478640.199801] x3 : 0000000000000000 x2 : 0000000000000042
[3478640.200358] x1 : 0000000000000000 x0 : 00000000fffffff5
[3478640.200835] Call trace:
[3478640.201084]  0x42
[3478640.201307]  process_one_work+0x1fc/0x4a8
[3478640.201705]  worker_thread+0x50/0x4d8
[3478640.202068]  kthread+0x134/0x138
[3478640.202386]  ret_from_fork+0x10/0x18
[3478640.202781] Code: bad PC value
[3478640.203165] SMP: stopping secondary CPUs
[3478640.205196] Starting crashdump kernel...

crash /usr/lib/debug/lib/modules/4.19.90-52.22.v2207.ky10.aarch64/vmlinux vmcore分析vmcore

LOAD AVERAGE: 102.08, 41.38, 22.56
       TASKS: 7790
    NODENAME: localhost.localdomain
     RELEASE: 4.19.90-52.22.v2207.ky10.aarch64
     VERSION: #1 SMP Tue Mar 14 11:52:45 CST 2023
     MACHINE: aarch64  (unknown Mhz)
      MEMORY: 126.4 GB
       PANIC: ""
         PID: 1268656
     COMMAND: "kworker/u128:0"
        TASK: ffffdc8435076a00  [THREAD_INFO: ffffdc8435076a00]
         CPU: 15
       STATE: TASK_RUNNING (PANIC)

crash> bt
PID: 1268656  TASK: ffffdc8435076a00  CPU: 15  COMMAND: "kworker/u128:0"
 #0 [ffffda857e1138c0] machine_kexec at ffff5607de7b2e8c
 #1 [ffffda857e113920] __crash_kexec at ffff5607de8ca148
 #2 [ffffda857e113a90] crash_kexec at ffff5607de8ca258
 #3 [ffffda857e113ac0] die at ffff5607de79f65c
 #4 [ffffda857e113b00] arm64_notify_die at ffff5607de79f964
 #5 [ffffda857e113b30] do_sp_pc_abort at ffff5607de7914f8
 #6 [ffffda857e113d10] el1_pc at ffff5607de792f94
 #7 [ffffda857e113d20] (null) at 3e
 #8 [ffffda857e113db0] process_one_work at ffff5607de8226f8
 #9 [ffffda857e113e00] worker_thread at ffff5607de8229f4
#10 [ffffda857e113e70] kthread at ffff5607de82a1e0

根据vmcore-dmesg中,pc : 0x42 lr : cmd_work_handler+0x434/0x578 [mlx5_core],查看lr寄存器执行的位置可见执行 blr     x2的时候触发了空指针。从而可知问题发生在drivers/net/ethernet/mellanox/mlx5/core/cmd.c: 908

crash> mod -s mlx5_core
crash> dis -rl cmd_work_handler+0x434 |tail -n 20
0xffff56077bcf6808 <cmd_work_handler+1016>:     mrs     x1, sp_el0
/usr/src/debug/kernel-4.19.90/linux-4.19.90-52.22.v2207.ky10.aarch64/drivers/net/ethernet/mellanox/mlx5/core/cmd.c: 906
0xffff56077bcf680c <cmd_work_handler+1020>:     ldr     x0, [x22,#-128]
0xffff56077bcf6810 <cmd_work_handler+1024>:     adrp    x2, 0xffff56077bd70000
0xffff56077bcf6814 <cmd_work_handler+1028>:     ldr     w4, [x1,#1712]
0xffff56077bcf6818 <cmd_work_handler+1032>:     add     x2, x2, #0xe50
0xffff56077bcf681c <cmd_work_handler+1036>:     add     x2, x2, #0x7c0
0xffff56077bcf6820 <cmd_work_handler+1040>:     mov     w3, #0x38a                      // #906
0xffff56077bcf6824 <cmd_work_handler+1044>:     adrp    x1, 0xffff56077bd7e000
0xffff56077bcf6828 <cmd_work_handler+1048>:     add     x1, x1, #0xcb0
0xffff56077bcf682c <cmd_work_handler+1052>:     bl      0xffff56077bd65e60 <plt:_dev_err>
/usr/src/debug/kernel-4.19.90/linux-4.19.90-52.22.v2207.ky10.aarch64/drivers/net/ethernet/mellanox/mlx5/core/cmd.c: 907
0xffff56077bcf6830 <cmd_work_handler+1056>:     ldr     x2, [x28,#40]
0xffff56077bcf6834 <cmd_work_handler+1060>:     cbz     x2, 0xffff56077bcf6970 <cmd_work_handler+1376>
/usr/src/debug/kernel-4.19.90/linux-4.19.90-52.22.v2207.ky10.aarch64/drivers/net/ethernet/mellanox/mlx5/core/cmd.c: 908
0xffff56077bcf6838 <cmd_work_handler+1064>:     ldr     x1, [x21,#-88]
0xffff56077bcf683c <cmd_work_handler+1068>:     mov     w0, #0xfffffff5                 // #-11
0xffff56077bcf6840 <cmd_work_handler+1072>:     blr     x2
/usr/src/debug/kernel-4.19.90/linux-4.19.90-52.22.v2207.ky10.aarch64/drivers/net/ethernet/mellanox/mlx5/core/cmd.c: 909
0xffff56077bcf6844 <cmd_work_handler+1076>:     ldr     x1, [x28,#16]
crash>

struct mlx5_cmd_work_ent是一个自定义的结构体,它包含了额外的字段和数据,用于处理MLX5驱动程序中的命令工作项。可见callback是一个有问题的值,该值出现问题应是网卡固件导致。

crash> struct mlx5_cmd_work_ent 0xffffda8553b4c400
struct mlx5_cmd_work_ent {
  state = 1,
  in = 0x383ef300000001,
  out = 0x1,
  uout = 0x0,
  uout_size = 0,
  callback = 0x42,
  cb_timeout_work = {
    work = {
      data = {
        counter = 0
      },

4.问题分析结果

通过上述分析,同时查看相关资料https://bugzilla.redhat.com/show_bug.cgi?id=1767678和https://forums.developer.nvidia.com/t/occure-mlx5-core-failed-to-allocate-command-entry-with-mcx4421a-acan-in-ubtuntu-18-04-1/206943,该问题更可能是网卡固件原因。可以尝试升级网卡固件,进行观察。

经查找有新的网卡固件版本为v14.32.1010。

Firmware for ConnectX®-4 Lx EN

具体的OPN号需要联系整机或网卡厂商获取,再找到对应的OPN网卡固件驱动由硬件厂商进行升级

5.参考资料

1767678 – [mlx5_core] OVS offload: mlx5_core 0000:04:00.0: cmd_work_handler:855:(pid 87647): failed to allocate command entry

RHEL8: Mellanox driver [mlx5_core] causing kernel stack overflow. - Red Hat Customer Portal

Occure mlx5_core :" failed to allocate command entry" with MCX4421A-ACAN in Ubtuntu 18.04.1 - Software And Drivers - NVIDIA Developer Forums

https://www.mellanox.com/downloads/MFT/mft-4.21.0-99-x86_64-rpm.tgz

https://www.mellanox.com/downloads/firmware/fw-ConnectX4Lx-rel-14_32_1010-MCX4121A-ACA_Ax-UEFI-14.25.17-FlexBoot-3.6.502.bin.zip

Bug Fixes History - NVIDIA Docs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/606437.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VTK数据的读写--Vtk学习记录1--《VTK图形图像开发进阶》

读和写操作是VTK可视化管线两端相关的类--Reader和Writer类 Reader:将外部数据读入可视化管线&#xff0c;主要步骤如下 s1:实例化Reader对象 s2:指定所要读取的文件名 s3:调用Update()促使管线执行 对应的Writer: s1:实例化Writer对象 s2输入要写的数据以及指定写入的文…

实习报告怎么写?笔灵AI实习体验报告模版分享:AI产品前端实习生

实习报告怎么写&#xff1f;笔灵AI实习体验报告模版可以帮你 点击即可使用&#xff1a;https://ibiling.cn/scene/inex?fromcsdnsx 下面分享AI产品前端实习生的实习报告 尊敬的导师和领导们&#xff1a;首先&#xff0c;我想对你们表达我的诚挚感谢&#xff0c;感谢你们给我…

暗区突围国际服pc端海外版如何快速致富 暗区突围pc端怎么赚钱

暗区突围是一款由腾讯魔方工作室研发的高拟真硬核射击手游&#xff0c;以现代战争为游戏题材&#xff0c;采用了全新的u3d引擎打造&#xff0c;整体游戏画风逼真写实&#xff0c;搭配上优秀的射击玩法&#xff0c;辅以史诗级的背景配乐&#xff0c;致力于带给玩家无与伦比的枪战…

“漫画之家”|基于Springboot+vue的“漫画之家”系统(源码+数据库+文档)

“漫画之家”系统 目录 基于Springbootvue的“漫画之家”系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2后台模块 5.2.1管理员功能模块 5.2.2用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&a…

linux代码实操——信号的使用

信号的基本概念 信号是系统响应某个条件而产生的事件&#xff0c;进程接收到信号会执行相应的操作。 与信号有关的系统调用在“signal.h”头文件中有声明 常见信号的值&#xff0c;及对应的功能说明&#xff1a; 修改信号的响应方式 – signal() 我们来做个小实验: 在键盘上…

容联云孔淼:大模型落地与全域营销中台建设

近日&#xff0c;由金科创新社主办的2024区域性商业银行数智化转型研讨会顺利召开&#xff0c; 容联云产业数字云事业群副总经理、诸葛智能创始人孔淼受邀出席&#xff0c;并分享数智化转型实践经验。 他分享了容联云两大核心产品&#xff0c;“大模型应用容犀Copilot”在金融营…

OpenCV Radon变换探测直线(拉东变换)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 Radon变换可以将原始图像中直线特征的处理问题转化为变换域图像中对应点特征的处理问题,其中对应特征点的横坐标表示原始图像的旋转角度,一般来讲原始图像中的噪声不会分布在直线的特征上。因此,Radon变换在探测…

互联网洗鞋工厂实现新时代下的家庭洗护服务;

互联网洗鞋工厂实现新时代下的家庭洗护服务; 拽牛科技洗护系统以智慧城市系统为依托&#xff0c;洗鞋工厂为中心&#xff0c;利用互联网&#xff0b;社区服务商模式&#xff0c;实现了新时代下的家庭洗护服务&#xff0c; 将客户&#xfe63;&#xfe63;社区服务商&#xfe63…

笔灵AI实习体验报告模版:新媒体运营实习生

笔灵AI实习体验报告模版&#xff0c;可以自己输入岗位&#xff0c;有需要的可以试试https://ibiling.cn/scene/inex?fromcsdnsx 免费分享【新媒体运营实习生】的实习体验报告 尊敬的导师和领导们&#xff1a;首先&#xff0c;我想对给予我这次宝贵实习机会的公司表示衷心的感…

5月数学进度应该到哪里?听说24更难了,进度要加快吗?

刷一本习题册够吗&#xff1f;刷哪本&#xff1f;什么时候刷&#xff1f; 确实&#xff0c;24考完&#xff0c;大家都发现&#xff0c;没有一本习题册&#xff0c;覆盖了考试的所有知识点。 主流的模拟卷&#xff0c;都没有达到24卷的难度。 如何才能在最短的时间内&#xff…

SpringCloud Config 分布式配置中心

SpringCloud Config 分布式配置中心 概述分布式系统面临的——配置问题ConfigServer的作用 Config服务端配置Config客户端配置 可以有一个非常轻量级的集中式管理来协调这些服务 概述 分布式系统面临的——配置问题 微服务意味着要将单体应用中的业务拆分成一个个字服务&…

极市平台 | 一文详解视觉Transformer模型压缩和加速策略(量化/低秩近似/蒸馏/剪枝)

本文来源公众号“极市平台”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;一文详解视觉Transformer模型压缩和加速策略(量化/低秩近似/蒸馏/剪枝) 作者丨Feiyang Chen等 来源丨AI生成未来 编辑丨极市平台 0 极市导读 本研究…

C/C++ 初级球球大作战练手

效果演示&#xff1a; https://live.csdn.net/v/385490 游戏初始化 #include <stdbool.h> #include<stdio.h> #include<stdlib.h> #include<time.h> #include<graphics.h> #include <algorithm> #include<math.h> #include<mmsy…

【全开源】Java俱乐部系统社区论坛商城系统源码-奔驰奥迪保时捷大众宝马等汽车俱乐部

特色功能&#xff1a; 会员管理与服务&#xff1a;系统支持多种会员身份以及优惠政策的制定&#xff0c;如普通会员、VIP会员、黄金会员等&#xff0c;且可以根据会员等级不同&#xff0c;进行不同的营销策略。此外&#xff0c;还提供了会员信息录入、会员积分管理、消费记录管…

算法学习:递归

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、什么是递归&#xff1f;三、两大基本要素&#x1f3c1; 基线条件&#xff08;Base Case&#xff09;&#x1f501; 递归条件&#xff08;Recursive Case&#xff09;&#x1f4c3; 代码示例&#xff1a;计算斐波…

【PyTorch实战演练】使用CelebA数据集训练DCGAN(深度卷积生成对抗网络)并生成人脸(附完整代码)

文章目录 0. 前言1. CelebA数据集1.1 核心特性与规模1.2 应用与用途1.3 获取方式1.4 数据预处理 2. DCGAN的模型构建2.1 生成器模型2.2 判别器模型 3. DCGAN的模型训练&#xff08;重点&#xff09;3.1 训练参数3.2 模型参数初始化3.3 训练过程 4. 结果展示4.1 loss值变化过程4…

从零开始!学习绘制3D表情的详细指南

在2020 年的苹果全球开发者大会(WWDC)&#xff0c;苹果发布了新的 macOS 11(又名 Big Sur)。其中在UI视觉方面macOS Big Sur 系统最大的变化就是图标上&#xff0c; Big Sur更新了很多新设计风格的 3D应用图标&#xff0c;3D设计的确可以提升UI整体的视觉氛围&#xff0c;并且现…

Linux——socket编程之tcp通信

前言 前面我们学习socket的udp通信&#xff0c;了解到了socket的概念与udp的实现方法&#xff0c;今天我们来学习一下面向连接的tcp通信。 一、tcp套接字创建 UDP和TCP都是通过套接字&#xff08;socket&#xff09;来实现通信的&#xff0c;因此TCP也得使用socket()接口创建…

企业架构领域的天花板——TOGAF证书

TOGAF证书是一项重要的企业架构认证&#xff0c;为专业人士提供了广泛的知识和技能&#xff0c;帮助他们在企业架构领域取得突破。 一、TOGAF证书的重要 提升专业知识和技能&#xff1a;TOGAF证书提供了广泛的企业架构知识和最佳实践&#xff0c;使专业人士能够更好地理解和应…

ESD静电问题 | 电容谐振频率点及选择

静电枪放出的静电属于共模干扰 针对静电整改加电容的时候选择频率在17.5MHz~350MHz区间的电容 【转自微信公众号&#xff1a;韬略科技EMC】