Hi Dmitry,
Thanks for the initiative.
Regarding the removal of mariadb and replacing it with Sqlite, how would it impact the performance of ironic?
Would it introduce any limitations regarding deployment on scale? I meant on the number of BMHs it can handle?
I think we can expect lower footprint in consumption of resources also for Sqlite?
Hi,On Thu, Dec 9, 2021 at 9:38 AM Kashif Khan <kashi...@est.tech> wrote:Hi Dmitry,
Thanks for the initiative.
Regarding the removal of mariadb and replacing it with Sqlite, how would it impact the performance of ironic?I've got several people asking me this question. A precise answer is not possible without measurements, and I don't think we've anyhow measured the performance with MariaDB as well. There are several considerations at play:1) MariaDB plays better with concurrent access, although WAL mode in SQLite should mostly make up for it.2) MariaDB is designed for client/server interaction, single client usage may see a large overhead for networking.3) There is an overhead of a separate MariaDB service, especially on a busy machine.4) SQLite will likely keep the whole database mapped into the Ironic's memory.And probably more.
Would it introduce any limitations regarding deployment on scale? I meant on the number of BMHs it can handle?As a small experiment, I started an Ironic (combined, no RPC) instance with an SQLite file (in old, non-WAL mode - forgot about it) and the "fake" driver (all driver operations are stubbed). I used a Python script with a thread pool of 50 threads to enroll 10000 fake nodes (forgot about ports), modify them a bit and "deploy" (fake, so only state machine operations).It took me roughly an hour, so nearly 3 nodes per second (could be affected by the fact I was logging to the console - my bad). No errors happened during that, Ironic still operates happily and within 200M RSS. The database file is just 9.4 MiB (would be somewhat larger for a real node, but still fit into memory). The API and my poor laptop were responsive during the process (I even had a video call at the same time!).
Thanks a lot Dmitry. The number looks promising.
I would also really like to know the method of your scalability experiment. Can you may be post a doc or screen capture somewhere on your available time?
Hi Dmitry,What is the benefit of running ironic in combined node compared to separation mode? And why didn't we run this mode at the beginning?
Also, if I understand correctly from your proposal, we should change to Sqlite only in combined mode, but keep using MariaDB in separation mode, i that true?
To view this discussion on the web visit https://groups.google.com/d/msgid/metal3-dev/HE1P189MB05877ECAC752D5F6B4F2950FC2709%40HE1P189MB0587.EURP189.PROD.OUTLOOK.COM.
On 8/12/21 08:43, Dmitry Tantsur wrote:
> Hi folks,
>
> For those who missed the early days of Metal3: we use mariadb in ironic
> because our early experiments show that using sqlite does not play well
> with the API-conductor separation. Indeed, although sqlite has WAL
> support, its concurrency is still based on exclusive locking. Inspector,
> being a monolithic service, does not suffer from this issue and still
> uses sqlite.
>
> I'm now adding a new script [1] to Ironic that launches API and
> conductor in the same process with or without [2] the JSON RPC bus. This
> change paves a way towards disabling both mariadb and JSON RPC in Metal3
> by default.
>
> I have prepared a proof-of-concept PR [3] (that requires [1] and [2])
> that (re)adds a /bin/runironic launcher, this time starting a combined
> API+conductor process. My thinking is to use Nginx to terminate TLS,
> just as we do for Inspector.
>
> I would also like to split the mariadb container away from ironic-image.
> Or should we just drop support for it completely in the near future?
I guess my only concern here would be that if we wanted deployments to
be able to scale out to multiple conductors in future, that would
presumably require something similar to our current topology.
Other than that, I am all in favour of SQLite. It's a much better fit
for all current use cases.
> Thoughts, ideas, objections?
>
> Dmitry
>
> [1] https://review.opendev.org/c/openstack/ironic/+/819620
> <https://review.opendev.org/c/openstack/ironic/+/819620>
> [2] https://review.opendev.org/c/openstack/ironic/+/820036
> <https://review.opendev.org/c/openstack/ironic/+/820036>
> [3] https://github.com/metal3-io/ironic-image/pull/330
> <https://github.com/metal3-io/ironic-image/pull/330>
--
You received this message because you are subscribed to the Google Groups "Metal3 Development List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to metal3-dev+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/metal3-dev/35de2718-48da-bad3-ea3d-858a6737ee18%40redhat.com.