Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Module registry #492

Draft
wants to merge 1 commit into
base: v3.x/staging
Choose a base branch
from
Draft

Conversation

ifakhrutdinov
Copy link
Contributor

@ifakhrutdinov ifakhrutdinov commented Sep 26, 2024

Proposed changes

To address potential LPA shortages when multiple ZIS instances are running on the same LPAR, a new feature--the module registry--has been introduced.

The module registry is a set of data structures in common storage in which eligible modules are traced. An eligible module is a module marked with a special macro; the mark and the module names are then used to uniquely identify the module. Once ZIS and its plug-in modules are marked, they can be added to the registry and shared: if another ZIS instance needs to load an identical module to the LPA, it will reuse a previously registered (and loaded to the LPA) module instead. Sharing identical modules should dramatically decrease the LPA footprint.

This feature must not be used when an application wants to remove its modules from the LPA (e.g., ZIS does that in dev mode) because it will affect any other applications using the same modules.

This PR addresses Issue: #405

Type of change

Please delete options that are not relevant.

  • New feature (non-breaking change which adds functionality)

PR Checklist

Please delete options that are not relevant.

  • If the changes in this PR are meant for the next release / mainline, this PR targets the "staging" branch.
  • My code follows the style guidelines of this project (see: Contributing guideline)
  • I have commented my code, particularly in hard-to-understand areas
  • New and existing unit tests pass locally with my changes
  • Relevant update to CHANGELOG.md
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works, or describe a test method below

Testing

  • Clone this repo and check out the source branch for this change;
  • Go to ./tests and run build_modreg.sh;
  • Make sure that the load library with the test module is APF-authorized;
  • Make sure a ZIS instance has been run since the latest IPL;
  • Use the JCL from ./tests/modregtest.c to run the test program;
  • The job must end with RC 0.

Further comments

@ifakhrutdinov ifakhrutdinov force-pushed the feature/module-registry branch 4 times, most recently from 07d8deb to cf5decf Compare September 27, 2024 10:37
@ifakhrutdinov ifakhrutdinov changed the title Module registry initial implementation Module registry Sep 27, 2024
@ifakhrutdinov ifakhrutdinov force-pushed the feature/module-registry branch 4 times, most recently from 38cb814 to d17cf8b Compare September 30, 2024 14:08
To address potential LPA shortages when multiple ZIS instances are
running on the same LPAR, a new feature--the module registry--has been
introduced.

The module registry is a set of data structures in common storage in
which eligible modules are traced. An eligible module is a module marked
with a special macro; the mark and the module names are then used to
uniquely identify the module. Once ZIS and its plug-in modules are
marked, they can be added to the registry and shared: if another ZIS
instance needs to load an identical module to the LPA, it will reuse
a previously registered (and loaded to the LPA) module instead. Sharing
identical modules should dramatically decrease the LPA footprint.

This feature must not be used when an application wants to remove its
modules from the LPA (e.g., ZIS does that in dev mode) because it will
affect any other applications using the same modules.

Fixes: #405

Signed-off-by: Irek Fakhrutdinov <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant