mesos-reviews mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jie Yu <yujie....@gmail.com>
Subject Re: Review Request 57574: Ensured the cgroup memory+swap limit is no less than the memory limit.
Date Sat, 18 Mar 2017 02:53:32 GMT


> On March 14, 2017, 4:56 a.m., Kevin Klues wrote:
> > src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.cpp
> > Lines 266-270 (patched)
> > <https://reviews.apache.org/r/57574/diff/1/?file=1662928#file1662928line277>
> >
> >     It's not clear to me how we ensure this invariant with the code below. Maybe
just updating the comment is enough to clear things up, but when I look at thsi code, it's
not obvious to me how this invariant is mantained.
> >     
> >     Is the assumption that `memory.limit_in_bytes` and `memory.memsw.limit_in_bytes`
are initially equal? Is it also assumed that `currentLimit` will only ever be greater than
or equal to the `initialLimit` the first time through this function. If so, why?
> >     
> >     What keeps us from passing a `limit` to this function that exceeds `initialLimit`
such that the case for `(currentLimit.get() >= initialLimit)` gets invoked more than just
the first time this function is called?
> >     
> >     Independent of that, I don't understand how we can ensure that `memory.limit_in_bytes`
always remains less than or equal `memory.memsw.limit_in_bytes` in the case of `(limit >
currentLimit.get())`. If the new `limit` is greater than the `currentLimit` and we set `memory.memsw.limit_in_bytes`
before we set `memory.limit_in_bytes`, doesn't that explicitly violate this invariant?
> >     
> >     Maybe I'm missing something.

Discussed offline. I adjusted some comments and variable naming to make it more clear.


- Jie


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/57574/#review168864
-----------------------------------------------------------


On March 14, 2017, 12:04 a.m., Jie Yu wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/57574/
> -----------------------------------------------------------
> 
> (Updated March 14, 2017, 12:04 a.m.)
> 
> 
> Review request for mesos, Benjamin Mahler, haosdent huang, Ian Downes, and Kevin Klues.
> 
> 
> Bugs: MESOS-7237
>     https://issues.apache.org/jira/browse/MESOS-7237
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> This addressed the bug we saw in MESOS-7237. Linux kernel will ensure
> cgroup memory+swap limit (i.e., 'memory.memsw.limit_in_bytes') is always
> no less than the memory limit ('memory.limit_in_bytes'). Prior to this
> patch, the memory subsystem in the cgroups isolator is buggy because
> memory+swap limit is always changed after the memory limit. This will
> cause EINVAL if we increase the memory limit of the container.
> 
> 
> Diffs
> -----
> 
>   src/slave/containerizer/mesos/isolators/cgroups/subsystems/memory.cpp 009e996add25e43e8989600a58b38f2cc88a5d11

> 
> 
> Diff: https://reviews.apache.org/r/57574/diff/1/
> 
> 
> Testing
> -------
> 
> sudo make check
> 
> 
> Thanks,
> 
> Jie Yu
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message