Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Paste
P2910
mem_wasted.py
Active
Public
Actions
Authored by
ori
on Apr 15 2016, 7:42 PM.
Edit Paste
Archive Paste
View Raw File
Subscribe
Mute Notifications
Award Token
Flag For Later
Tags
None
Referenced Files
F3879981: mem_wasted.py
Apr 15 2016, 7:42 PM
2016-04-15 19:42:39 (UTC+0)
Subscribers
None
import
collections
import
contextlib
import
re
import
telnetlib
servers
=
[(
'mc10
%02d
.eqiad.wmnet'
%
n
)
for
n
in
range
(
1
,
19
)]
GB
=
float
(
1024
**
3
)
def
get_slab_stats
(
host
,
port
=
11211
):
with
contextlib
.
closing
(
telnetlib
.
Telnet
(
host
,
port
))
as
client
:
client
.
write
(
'stats slabs
\n
'
)
data
=
client
.
read_until
(
'END'
)
slabs
=
{}
for
line
in
data
.
split
(
'
\n
'
):
try
:
slab
,
key
,
value
=
re
.
search
(
'STAT (\d+):(\w+) (\d+)'
,
line
)
.
groups
()
except
AttributeError
:
break
else
:
slabs
.
setdefault
(
int
(
slab
),
{})[
key
]
=
int
(
value
)
return
slabs
total_wasted
=
0
for
server
in
servers
:
wasted
=
0
for
s
in
get_slab_stats
(
server
)
.
values
():
wasted
+=
((
s
[
'total_chunks'
]
*
s
[
'chunk_size'
])
-
s
[
'mem_requested'
])
total_wasted
+=
wasted
print
(
'| {:<20s} | {:>6.2f} gB |'
.
format
(
server
,
wasted
/
GB
))
print
(
'| {:<20s} | {:>6.2f} gB |'
.
format
(
'Total'
,
total_wasted
/
GB
))
print
(
'| {:<20s} | {:>6.2f} gB |'
.
format
(
'Avg'
,
total_wasted
/
(
GB
*
len
(
servers
))))
Event Timeline
ori
created this paste.
Apr 15 2016, 7:42 PM
2016-04-15 19:42:39 (UTC+0)
ori
mentioned this in
T129963: Update memcached package and configuration options
.
Apr 15 2016, 7:50 PM
2016-04-15 19:50:18 (UTC+0)
Log In to Comment