一、问题背景

  1. 一个朋友在使用 XGBoost 框架进行机器学习编码,他们的一个demo, 在笔记本的虚拟机(4核)运行的时候,只要8s, 但是在一个64核128G 的物理机上面的虚拟机去跑的时候,发现时间需要更长。

    image-20220517103920522

    笔记本执行:

    image-20220517104217425

二、问题定位和解决

首先看到负载是比较高的,内存占用比较少。因为是计算型的,所以这种状态是正常的。

一开始我觉得是GIL 锁,后面询问是使用了 XGBoost 框架,想去官网看看能不能找到相关内容

XGBoost 多线程支持 文档的一段话提醒了我:

示例: https://github.com/dmlc/xgboost/blob/master/demo/guide-python/sklearn_parallel.py

我们通过示例将 n_job 的值调整为 cpu 核心的一半,

n_jobs=multiprocessing.cpu_count()//2

发现解决了问题

image-20220517104911783

作者:|自由早晚乱余生|,原文链接: https://www.cnblogs.com/operationhome/p/16324011.html

文章推荐

java的容器支持cpu

Java开发学习(一)----初识Spring及其核心概念

linux系统下文件误删除该如何恢复?

Seata源码分析(一). AT模式底层实现

Hadoop: 单词计数(Word Count)的MapReduce实现

热力图生成算法及其具体实现

HarmonyOS初探04——使用DevEco Studio时设置Gr

一个简单易用的文件上传方案

并发编程之临界区\阻塞\非阻塞\死锁\饥饿\活锁

【java并发编程】ReentrantLock 可重入读写锁

手把手教你玩多数据源动态切换!

api网关介绍