You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We have noticed a significant performance deviation between the gitpython and pygit2 backends for gitfs. The file list cache rebuild process for pygit2 can be 10x or more slower than gitpython. In our environment, this was leading to file_list cache rebuilds taking longer than the file_list_cache_time, and high CPU utilization at the master when minions start running a state. With enough minions running a state, the master stops responding entirely as all the worker threads are tied up doing file_list cache rebuilds in parallel. (I think there is maybe a separate locking issue here, but I'm not trying to address it right now)
(venv) [ec2-user@ip-172-31-61-166 master.d]$ time salt-run -c ~/venv/etc/salt -l profile fileserver.file_list | wc -l
22:57:47,652 [salt.utils.verify:558 ][WARNING ][23277] Insecure logging configuration detected! Sensitive data may be logged.
22:57:48,014 [py.warnings :110 ][WARNING ][23277] /home/ec2-user/salt/salt/utils/dictdiffer.py:16: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
from collections import Mapping
22:57:51,862 [salt.loaded.int.grains.core :1063][INFO ][23277] Although 'virt-what' was found in path, the current user cannot execute it. Grains output might not be accurate.
22:57:52,150 [salt.utils.gitfs :30 ][PROFILE ][23277] gitfs file_name cache rebuild [email protected]:foo/bar.git duration=0.11979842185974121 seconds
22:57:52,165 [salt.client.mixins :421 ][INFO ][23277] Runner completed: 20191123225747673536
1011
real 0m5.575s
user 0m5.367s
sys 0m0.204s
With pygit2:
(venv) [ec2-user@ip-172-31-61-166 master.d]$ time salt-run -c ~/venv/etc/salt -l profile fileserver.file_list | wc -l
22:59:41,016 [salt.utils.verify:558 ][WARNING ][23929] Insecure logging configuration detected! Sensitive data may be logged.
22:59:41,243 [py.warnings :110 ][WARNING ][23929] /home/ec2-user/salt/salt/utils/dictdiffer.py:16: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
from collections import Mapping
22:59:44,377 [salt.loaded.int.grains.core :1063][INFO ][23929] Although 'virt-what' was found in path, the current user cannot execute it. Grains output might not be accurate.
23:00:10,481 [salt.utils.gitfs :30 ][PROFILE ][23929] gitfs file_name cache rebuild [email protected]:foo/bar.git duration=25.939875841140747 seconds
23:00:10,503 [salt.client.mixins :421 ][INFO ][23929] Runner completed: 20191123225941031963
1011
real 0m30.262s
user 0m29.738s
sys 0m0.532s
The PROFILE log message is from a PR that I am submitting as soon as I'm done with this issue, where we added logging in to better understand the issue at hand.
Versions Report
(venv) [ec2-user@ip-172-31-61-166 master.d]$ salt -V
Salt Version:
Salt: 2019.2.1-101-gae6ca7e
Dependency Versions:
cffi: 1.13.2
cherrypy: Not Installed
dateutil: Not Installed
docker-py: Not Installed
gitdb: 2.0.6
gitpython: 3.0.5
Jinja2: 2.10.3
libgit2: 0.28.2
M2Crypto: Not Installed
Mako: Not Installed
msgpack-pure: Not Installed
msgpack-python: 0.6.2
mysql-python: Not Installed
pycparser: 2.19
pycrypto: 2.6.1
pycryptodome: Not Installed
pygit2: 0.28.2
Python: 3.7.4 (default, Nov 12 2019, 19:44:08)
python-gnupg: Not Installed
PyYAML: 5.1.2
PyZMQ: 18.1.1
smmap: 2.0.5
timelib: Not Installed
Tornado: 4.5.3
ZMQ: 4.3.2
System Versions:
dist:
locale: UTF-8
machine: x86_64
release: 4.14.152-127.182.amzn2.x86_64
system: Linux
version: Not Installed
We have also replicated this same issue on Salt 2018.3.4 running on RHEL 7.7:
Salt Version:
Salt: 2018.3.4
Dependency Versions:
cffi: 1.13.2
cherrypy: Not Installed
dateutil: 1.5
docker-py: Not Installed
gitdb: 0.6.4
gitpython: 1.0.1
ioflo: Not Installed
Jinja2: 2.7.2
libgit2: 0.26.6
libnacl: Not Installed
M2Crypto: 0.21.1
Mako: Not Installed
msgpack-pure: Not Installed
msgpack-python: 0.4.6
mysql-python: Not Installed
pycparser: 2.17
pycrypto: 2.6.1
pycryptodome: Not Installed
pygit2: 0.26.4
Python: 2.7.5 (default, Jun 11 2019, 14:33:56)
python-gnupg: Not Installed
PyYAML: 3.10
PyZMQ: 15.3.0
RAET: Not Installed
smmap: 0.9.0
timelib: Not Installed
Tornado: 4.2.1
ZMQ: 4.1.4
System Versions:
dist: redhat 7.7 Maipo
locale: UTF-8
machine: x86_64
release: 3.10.0-1062.4.3.el7.x86_64
system: Linux
version: Red Hat Enterprise Linux Server 7.7 Maipo
The text was updated successfully, but these errors were encountered:
Description of Issue
We have noticed a significant performance deviation between the gitpython and pygit2 backends for gitfs. The file list cache rebuild process for pygit2 can be 10x or more slower than gitpython. In our environment, this was leading to file_list cache rebuilds taking longer than the file_list_cache_time, and high CPU utilization at the master when minions start running a state. With enough minions running a state, the master stops responding entirely as all the worker threads are tied up doing file_list cache rebuilds in parallel. (I think there is maybe a separate locking issue here, but I'm not trying to address it right now)
Setup
In master.conf:
and one or the other of:
or
Steps to Reproduce Issue
With gitpython:
With pygit2:
The
PROFILE
log message is from a PR that I am submitting as soon as I'm done with this issue, where we added logging in to better understand the issue at hand.Versions Report
We have also replicated this same issue on Salt 2018.3.4 running on RHEL 7.7:
The text was updated successfully, but these errors were encountered: