You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置AWS EC2实例运行osmium tags-filter并提升CPU利用率

问题背景

本地运行情况

设备:2023款MacBook Pro(Apple M2 Pro芯片、32GB内存)
工具:osmium tags-filter
操作:处理完整的planet-231002.osm.pbf文件,筛选保留含aeroway标签的节点/关系/路径

运行命令及结果:

(base) jarvis@MacBook-Pro-4 data % gtime -v osmium tags-filter planet-231002.osm.pbf aeroway -o planet-aeroways-231002-5.osm                                   
[======================================================================] 100% 
    Command being timed: "osmium tags-filter planet-231002.osm.pbf aeroway -o planet-aeroways-231002-5.osm"
    User time (seconds): 1967.62
    System time (seconds): 191.60
    Percent of CPU this job got: 796%
    Elapsed (wall clock) time (h:mm:ss or m:ss): 4:31.04
    Average shared text size (kbytes): 0
    Average unshared data size (kbytes): 0
    Average stack size (kbytes): 0
    Average total size (kbytes): 0
    Maximum resident set size (kbytes): 3297744
    Average resident set size (kbytes): 0
    Major (requiring I/O) page faults: 7
    Minor (reclaiming a frame) page faults: 956777
    Voluntary context switches: 156
    Involuntary context switches: 2594349
    Swaps: 0
    File system inputs: 0
    File system outputs: 0
    Socket messages sent: 0
    Socket messages received: 0
    Signals delivered: 0
    Page size (bytes): 16384
    Exit status: 0

本地耗时仅4.5分钟,工具充分利用多核CPU。

EC2运行情况

实例配置:debian-12-arm64-20230711-1438 AMI、c7g.large实例
osmium版本:

admin@ip-10-0-147-70:~$ osmium --version
osmium version 1.15.0
libosmium version 2.18.0
Supported PBF compression types: none zlib lz4

运行相同操作时,进程启动超1小时,top显示CPU利用率从未超过8%(偶尔达20%),仅分配10分钟CPU时间,内存充足:

Tasks: 112 total,   1 running, 111 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.7 us,  0.2 sy,  0.0 ni, 44.4 id, 49.7 wa,  0.0 hi,  0.0 si,  0.0 
MiB Mem :   3830.5 total,   3575.7 free,    274.2 used,    116.5 buff/cache  
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   3556.3 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ 
    535 admin     20   0  180484  32704   4844 S  12.0   0.8  10:29.54 
问题解答

1. 如何为osmium tags-filter进程分配更多CPU资源?

从top输出的49.7 wa(I/O等待占比)可以看出,当前瓶颈是磁盘I/O,而非CPU资源分配。可尝试以下操作:

  • 调整进程优先级:使用renice命令提升进程优先级,例如renice -n -10 -p 535,让系统优先给该进程分配CPU时间。
  • 优化存储性能:c7g.large默认EBS卷I/O性能有限,可更换为gp3/io2等高IOPS卷,或把文件拷贝到实例本地NVMe存储,减少I/O等待。
  • 清理后台进程:关闭不必要的后台服务,降低系统其他进程对CPU、I/O资源的占用。
  • 确认多线程支持:osmium 1.15.0默认支持多核,但可检查编译时是否开启多线程(arm64版本通常默认开启)。

2. 增加vCPU数量是否有助于提升效率(本地为12核)?

当前I/O瓶颈未解决时,单纯增加vCPU不会明显提升效率——CPU多数时间在等待磁盘数据。但解决I/O问题后,增加vCPU会显著提升效率:

  • osmium tags-filter是多核优化工具,本地796%的CPU利用率(约8核满负荷)已证明其能有效利用多核资源。
  • 本地为12核,EC2 c7g.large仅2核,当I/O不再是瓶颈时,升级到8核/12核的c7g实例(如c7g.4xlarge/c7g.6xlarge),处理时间会大幅缩短。
  • 注意:增加vCPU需匹配对应性能的存储,避免再次陷入I/O等待。

内容的提问来源于stack exchange,提问作者Jarvis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 14:20:28