- 
                Notifications
    You must be signed in to change notification settings 
- Fork 217
Description
Summary
We have a custom autoscaling job which scales the VM based on memory consumption.
We are calculating the used memory and based on the output of "free -m" which matches with the output of bosh vm  --vitals .
Today our scaling job scaled down the VMS. Even though we had enough capacity in term of memory the application started complaining about insufficient memory when starting up on remaining VMs.
I would like to understand how Available memory in REP is calculated by Diego.
I came across https://github.com/cloudfoundry/rep/blob/320f5e9ff0ba2a7bb1294927cbe31ce5af40c987/resources.go#L63-L68
func (c *CellState) ResourceMatch(res *Resource) error {
switch {
case !c.MatchRootFS(res.RootFs):
return ErrorIncompatibleRootfs
case c.AvailableResources.MemoryMB < res.MemoryMB:
return ErrorInsufficientResources
case c.AvailableResources.DiskMB < res.DiskMB:
return ErrorInsufficientResources
case c.AvailableResources.Containers < 1:
return ErrorInsufficientResources
default:
return nil
}
}
It looks like the data is fetched using  curl http://10.96.166.55:1800/state Which provides me with
AvailableResources":
{"MemoryMB":0,"DiskMB":139264,"Containers":237},"TotalResources":{"MemoryMB":30720,"DiskMB":163840,"Containers":249}
When I execute bosh VMS --vitals I am getting
| vp_diego_cell_internal_stack_red_z1/1 (9bab400f-0848-4fd4-98cf-116a5360269a) | running | n/a | runner_z1 | 10.96.166.55 | 0.30, 0.30, 0.36 | 0.6% | 0.1% | 0.0% | 72% (21.7G) | 2% (576.2M) | 39% | 47% | 0% |
On the VM i have
vp_diego_cell_internal_stack_red_z1/9bab400f-0848-4fd4-98cf-116a5360269a:~$ free -m
total       used       free     shared    buffers     cached
Mem:         30662      30336        325          1       1741       6381
-/+ buffers/cache:      22212       8449
Swap:        30663        576      30086
i should be able to push an application of 4 GB easily based on VM capacity.
[Describe the result that you expected to happen.]
I should not get insufficient.