Use libyaml parsing when available
Nodepool periodically reloads its config. On systems with large configs this can cause a substantial amount of cpu usage. Our profiling of an idle provider revealed that the yaml parsing accounted for ~15% cpu load while the provider was idle. This could be improved by utilizing the native libyaml bindings when available. Change-Id: Icbed393c5aa00abd52d1e13ccbbad8546ec6cf97
This commit is contained in:
parent
bd6dea8f97
commit
61963917a0
@ -9,6 +9,10 @@ libffi6 [platform:dpkg]
|
||||
libffi [platform:apk]
|
||||
libressl-dev [compile test platform:apk]
|
||||
libssl-dev [compile test platform:dpkg]
|
||||
libyaml-0-2 [platform:dpkg platform:suse]
|
||||
libyaml [platform:redhat]
|
||||
libyaml-dev [platform:dpkg compile test]
|
||||
libyaml-devel [platform:rpm compile test]
|
||||
linux-headers [compile test platform:apk]
|
||||
make [compile test platform:apk platform:dpkg]
|
||||
musl-dev [compile test platform:apk]
|
||||
|
@ -24,6 +24,11 @@ from nodepool import zk
|
||||
from nodepool.driver import ConfigValue
|
||||
from nodepool.driver import Drivers
|
||||
|
||||
try:
|
||||
from yaml import CSafeLoader as SafeLoader
|
||||
except ImportError:
|
||||
from yaml import SafeLoader
|
||||
|
||||
|
||||
class Config(ConfigValue):
|
||||
'''
|
||||
@ -314,7 +319,8 @@ def openConfig(path, env):
|
||||
while True:
|
||||
try:
|
||||
with open(path) as f:
|
||||
return yaml.safe_load(substitute_env_vars(f.read(), env))
|
||||
return yaml.load(
|
||||
substitute_env_vars(f.read(), env), SafeLoader)
|
||||
except IOError as e:
|
||||
if e.errno == 2:
|
||||
retry = retry - 1
|
||||
|
Loading…
Reference in New Issue
Block a user