Add 60+ Redfish provider to MIQ,memory exhaust

hammer

#1

I have a MIQ worker node of 8CPU/16GB memory, after add 60+ Redfish provider to MIQ,I found that MIQ worker node‘s memory was exhaust!!I also found there‘s so much EventCatcher&RefreshWorker

memory usage:
image

top memory usage:

why there’s so much EventCatcher&RefreshWorker??


#2

Hi.

By design, each provider instance gets its own event catcher worker and there is not much one can do about it.

What you can do is disable the Redfish event catcher, since at the moment, not many Redfish API implementations are recent enough to be usable from MIQ. I will assume that you are using MIQ appliance in my instructions.

First, you need to ssh into the appliance and move to the application root by executing vmdb command. Now open the lib/workers/miq_worker_types.rb file and delete the following two lines:

"ManageIQ::Providers::Redfish::PhysicalInfraManager::EventCatcher"            => %i(manageiq_default),
ManageIQ::Providers::Redfish::PhysicalInfraManager::EventCatcher

Note that those two lines will not be sitting next to each other, so you will need to search the file a bit.

After you are done with deleting, save the file and restart appliance.

Disclaimer: Redfish provider is not as mature as other parts of the MIQ, since Hammer is the first release that has Redfish provider included.

Cheers and hope my instructions help you resolve your issues,
Tadej


#3

Hi.
I delete

"ManageIQ::Providers::Redfish::PhysicalInfraManager::EventCatcher"            => %i(manageiq_default),
ManageIQ::Providers::Redfish::PhysicalInfraManager::EventCatcher

as you mentioned,memory usage turns out :
image

then I also delete:

"ManageIQ::Providers::Redfish::PhysicalInfraManager::RefreshWorker"            => %i(manageiq_default),
ManageIQ::Providers::Redfish::PhysicalInfraManager::RefreshWorker

memory usage:
image

I’m not sure RedfishProvider’s functios still works after i delete all of them and i’m testing on it.


#4

This change should only prevent event catcher worker from spinning up. All other functionality should remain unaffected. Is there anything specific you see not working when event catcher is disabled?


#5

Thanks
After I delete eventcatcher I got “uninitialized constant Manageiq::Providers::Redfish::PhysicalInfraManager::RefreshParser” when I "refresh relationship and power“ for a redfish provider.I’ve spent a long time try to resolve it but failed.

BTW,I also found that some of my redfish provider can’t find physical server,hope you can help.


#6

This error seems unrelated to the change I suggested. But just to be sure, let me try and test this. What version of MIQ are you running?


#7

I just tested this with latest MIQ nightly and the inventory refresh process is not affected by the proposed change. I do not have access to Hammer version currently, but test it when I get my hands on it.


#8

@Fengqi_Lee It should be enough to disable roles related to event catching (in advanced settings of the server)

But to get some data, you will need at least refresh role (and workers). And there needs to be a refresh worker per provider, which if your providers are small will eat like 500-600MB, so you’ll need at least number_of_providers*500MB, + something for generic workers.

Product wise: CloudForms (the downstream of ManageIQ) has a sizing documentation. I thinks it requires to run on several servers at least, having 8GB RAM for each provider.


#9

Glade to here you
If i increase the memory to number_of_providers*500MB, + something for generic workers ,it works ok


#10

As Ladas says,According to the sizing documentation,One provider will eat like 500-600MB,I think if we can change the redfish provider to manage more than one PhysicalServer?Just like infrastructure providers.


#11

Unfortunately, the design of the providers is such that each provider instance corresponds to a single Redfish server access point. If the Redfish server that the provider is connected to handles multiple Physical Servers (and, possibly, other physical entities), then that would work. But if each Physical Server is at the same time a discrete Redfish server, then that cannot be handled within a single provider instance.