-
Notifications
You must be signed in to change notification settings - Fork 899
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
Save unique_set_size when saving process info #16569
Conversation
@miq-bot add_label gaprindashvili/yes |
@miq-bot add_label enhancement |
@gtanzillo @Fryguy I tested this PR along with it's two dependent PRs in schema and gems pending. This only stores USS in the database. It does NOT log it, show it in rake evm:status or change the worker monitor code to use USS for the threshold checking. Those will be done next. |
Merged both dependent PRs. |
Why? USS is a more reliable mechanism for tracking workers with runaway memory growth. PSS is great, until the server process that forks new processes grows large. As each new worker is forked, it inherits a share of the large amount of the parent process' memory and therefore starts with a large PSS, possibly exceeding our limits before doing any work. USS only measures a process' private memory and is a better indicator when a process is responsible for allocating too much memory without freeing it.
87ac247
to
a60fbdd
Compare
Checked commit jrafanie@a60fbdd with ruby 2.3.3, rubocop 0.47.1, haml-lint 0.20.0, and yamllint 1.10.0 app/models/miq_worker.rb
|
@Fryguy This is finally 💚 🎉 |
Save unique_set_size when saving process info (cherry picked from commit d50a4d9)
Gaprindashvili backport details:
|
Why? USS is a more reliable mechanism for tracking workers with runaway
memory growth. PSS is great, until the server process that forks new
processes grows large. As each new worker is forked, it inherits a share
of the large amount of the parent process' memory and therefore starts
with a large PSS, possibly exceeding our limits before doing any work.
USS only measures a process' private memory and is a better indicator
when a process is responsible for allocating too much memory without
freeing it.
Depends on: