首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制CPU的使用不允许的J2循环

限制CPU的使用不允许的J2循环
EN

Server Fault用户
提问于 2023-03-06 11:44:02
回答 1查看 49关注 0票数 2

我有一个Ansible任务,它格式化了一个VLAN列表。但是,当我使用多个分叉运行任务时,它会导致我的CPU使用率在很长一段时间内达到100%。如何优化任务以减少CPU使用或限制此任务的CPU使用?

这是最初的任务:

代码语言:javascript
复制
- name: Fromat VLAN list
  ansible.builtin.set_fact:
    device_interface_vlans: "{{ dict(key | zip(val)) }}"
  vars:
    dev_ifc_str: |-
      {% for vlan in ansible_facts.napalm_vlans.keys() %}
      {% for int in ansible_facts.napalm_vlans[vlan]['interfaces'] %}
      - {int: {{ int }}, vlan: {{ nb_vlans | selectattr('vid', 'equalto', vlan | int) | map(attribute='id') | join }}}
      {% endfor %}
      {% endfor %}
    int_vlan: "{{ dev_ifc_str | from_yaml }}"
    arr: "{{ int_vlan | groupby('int') }}"
    key: "{{ arr | map('first') | list }}"
    val: "{{ arr | map('last') |
      map('json_query', '[].vlan') |
      map('community.general.dict_kv', 'vlans') | list }}"

我已经尝试过cpulimit,但是它限制了每个分叉的cpu使用,而不是所有的。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2023-03-07 09:37:52

我用json_query修正了它的速度快得多:

代码语言:javascript
复制
    - ansible.builtin.set_fact:
        device_interface_vlans: "{{ dict(key | zip(val)) }}"
      vars:
        dev_ifc_str: |-
          {% for vlan in ansible_facts.napalm_vlans.keys() %}
          {% for int in ansible_facts.napalm_vlans[vlan]['interfaces'] %}
          - {int: {{ int }}, vlan: {{ nb_vlans | json_query('[?vid == `{}`].id'.format(vlan | int)) | join }}}
          {% endfor %}
          {% endfor %}
        int_vlan: "{{ dev_ifc_str | from_yaml }}"
        arr: "{{ int_vlan | groupby('int') }}"
        key: "{{ arr | map('first') | list }}"
        val: "{{ arr | map('last') |
          map('json_query', '[].vlan') |
          map('community.general.dict_kv', 'vlans') | list }}"
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1125446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档