We have an architecture that uses plugins for all functionality.
Plugins are loaded dynamically at runtime from a set of .so files that implement a common interface.
This is split into 2 core types, managers and modules.
Managers and Modules are both loaded by a ‘Root Manager’, modules are then assigned to the appropriate manager once loaded.
The sub-manager then initialises the module, which in turn creates its’ own go-routines for threaded processing (using wait groups).
We have the communication working effectively between the threads and this is no issue.
The issue I am having is that even when using plugins in this way (plugin.open) and then performing functions I am unable to profile this activity even when using
c := make(chan os.Signal, 1) signal.Notify(c)
Is there any way to profile this behaviour? Or will we have to implement profiling within the modules individually?
Any tips or pointers would be greatly appreciated. Thanks