多核系统中进程的亲和性 Ubuntu 14.04

多核系统中进程的亲和性 Ubuntu 14.04

我们在多核(8 核)虚拟机上运行多个进程。其中大多数是 Java。在另一个非 V 机器上,它们运行良好。但在这个机器上,有时一切都显得很慢。

顶部显示 CPU 使用率为 99%,但 IT 人员说这不是问题,因为它有 8 个核心。

无论如何,是否知道所有 8 个或只有几个核心可用于 Java 进程(由于虚拟机中的一些错误配置)?

有没有办法知道 Java 进程是否受到占用 2 个核心 50% 的扫描仪的影响?在 Windows 中,可以在任务管理器中查看https://ibb.co/mNJhqF Windows 任务与 CPU/核心的亲和性。图片来自 https://www.mt4copier.com/improve-mt4-trade-copier-speed/ 我们的服务器没有 GUI,因此需要终端命令

有任何命令/步骤可以知道 Java 进程需要多少 CPU 时间以及它们获得了多少 CPU 时间吗?

以下是 top 的输出(输入 1 后查看每个核心的使用情况。删除了多余的空格,以便在电子表格中格式化,将“ ”替换为“ ”,将“\n ”替换为“ ”)

top - 15:05:33 up 56 days, 13:35, 7 users, load average: 1.06, 1.08, 1.06
Tasks: 482 total, 2 running, 480 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 99.0 us, 0.7 sy, 0.0 ni, 0.0 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 0.3 us, 1.0 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu6 : 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu7 : 0.7 us, 0.7 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 32934880 total, 32335788 used, 599092 free, 942292 buffers
KiB Swap: 9202684 total, 1338100 used, 7864584 free. 10891396 cached Mem

PID    USER   PR NI VIRT     RES      SHR   S    %CPU %MEM TIME+     COMMAND 
14445  AVuser 20 0  376708   143972   3772  R    99.4 0.4  5:10.55   scanner 
11045  user1  20 0  7162456  662720   11024 S    0.7  2.0  11:27.62  java    
15685  root3  20 0  25.125g  585900   5300  S    0.7  1.8  156:19.28 java    
123326 root3  20 0  5598660  218820   9792  S    0.7  0.7  15:43.57  java    
12942  user1  20 0  5366300  409164   5984  S    0.3  1.2  203:47.47 java    
14685  user1  20 0  34856    2088     1236  R    0.3  0.0  0:00.08   top     
46018  user1  20 0  6417468  464356   15336 S    0.3  1.4  3:46.92   java    
46645  user1  20 0  11.936g  2.837g   15020 S    0.3  9.0  3:53.25   java    
47504  user1  20 0  3654616  41888    12124 S    0.3  0.1  1:52.82   java    
47528  user1  20 0  5683220  316128   15408 S    0.3  1.0  2:51.20   java    
122516 root3  20 0  12.371g  176716   9160  S    0.3  0.5  3:36.29   java    
122701 root3  20 0  12.374g  177420   9216  S    0.3  0.5  4:00.00   java    
122848 root3  20 0  12.373g  172008   9176  S    0.3  0.5  3:43.66   java    
129623 user1  20 0  3654624  48728    10472 S    0.3  0.1  3:03.76   java    
129653 user1  20 0  6650800  401032   12188 S    0.3  1.2  7:30.19   java    
130620 root3  20 0  3645888  44848    6696  S    0.3  0.1  15:05.26  java    

更新:一个物理系统上有 8 个虚拟机。驱动器位于同一个物理系统上。

1 VM 已强化与 mysql 通信并写入日志的 Java 进程(最新的 log4j,具有异步功能);其中 3 个 Java 进程确实在其发件箱中写入小文本文件,但它们运行正常 - 处理后几秒钟内删除

1 VM 用于 mysql(开源),略微强化了一点。全部都是 ubuntu 14.04 LTS。

I/O - 应该是最小的。我该如何测试呢?是否有任何实用程序可以在我的本地开发系统上编写,然后在虚拟机上编写?

相关内容