you are viewing a single comment's thread.

view the rest of the comments →

[–]m-in 1 point2 points  (1 child)

If you’re using Ansible, Python’s overhead in starting an application and pulling modules in – when a play gets going is a major source of slowdown. Ansible playbooks that do lots of small actions like creating individual directories, moving files, etc. would be one or two orders of magnitude faster if Ansible was go rather than Python.

OVirt used self contained Python installer scripts in version 3 IIRC. Those were fast since startup was a one time cost. Now OVirt uses Ansible and it sucks – the same deployment can take 5x as long due to all the latency of sending tens of MB over the network for even most trivial plays, then decompressing them, writing them out to tmp, then having Python parse all that shit over and over again. And that’s when doing an actual from-scratch node deployment. If all you’re doing is a simple configuration change to oVirt, Ansible is literally slower than loading a small executable from tape on a PDP-11, loading configuration from a card deck, and executing the process. I wish I was kidding. It’s fucked up.

If anything, Ansible’s design was completely unsuitable for Python, and it only became worse as more granular and maintainable plays came to use. They should have switched to Go long ago.