some fixes and improvements

Andrei Nigmatulin anight@monamour.ru
Wed, 16 Jun 2004 18:58:52 +0400


--=-n/CEoqZZEeLRE3kgmMl9
Content-Type: multipart/mixed; boundary="=-iECY7rnbneezBaJCQJHk"


--=-iECY7rnbneezBaJCQJHk
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Hello, list

I have installed memcached on linux 2.6 and have made some improvemets,
here they are:

1) mlockall(2) is priveleged function on linux, so i moved the call
before setuid().
2) i have compiled static memcached binary to have ~3GB for heap. in
order to do that i have solved two problems:
 - getpwnam() uses Name Service Switching libraries internally which is
located in separate shared dlls. so when we use this functions libc does
dlopen() them and breaks our address space. so i decided to pass uid and
gid to program by numbers, and we do not need getpwnam() any more.
 - malloc() always checks requested block size for some limit and in
some circumstances uses mmap() system call which is breaks address space
too. to prevent libc doing so i added option '-o', so when it specified
we call mallopt(M_MMAP_MAX, 0), so malloc will not use mmap again.

Please consider including the patches to memcached ;-)

ps sorry for bad english

--=20
Andrei Nigmatulin
GPG PUB KEY 6449830D


--=-iECY7rnbneezBaJCQJHk
Content-Disposition: attachment; filename=memcached.diff
Content-Transfer-Encoding: base64
Content-Type: text/x-patch; name=memcached.diff; charset=koi8-r

ZGlmZiAtcHJ1IG1lbWNhY2hlZC0xLjEuMTEvbWVtY2FjaGVkLmMgbWVtY2FjaGVkLTEuMS4xMS5u
ZXcvbWVtY2FjaGVkLmMNCi0tLSBtZW1jYWNoZWQtMS4xLjExL21lbWNhY2hlZC5jCTIwMDQtMDQt
MjcgMDE6MjY6NDguMDAwMDAwMDAwICswNDAwDQorKysgbWVtY2FjaGVkLTEuMS4xMS5uZXcvbWVt
Y2FjaGVkLmMJMjAwNC0wNi0xNiAxODowMTowMS4yMTUwODc4MjEgKzA0MDANCkBAIC0xMTc5LDYg
KzExNzksOCBAQCB2b2lkIHVzYWdlKHZvaWQpIHsNCiAgICAgcHJpbnRmKCItciAgICAgICAgICAg
IG1heGltaXplIGNvcmUgZmlsZSBsaW1pdFxuIik7DQogICAgIHByaW50ZigiLXUgPHVzZXJuYW1l
PiBhc3N1bWUgaWRlbnRpdHkgb2YgPHVzZXJuYW1lPiAob25seSB3aGVuIHJ1biBhcyByb290KVxu
Iik7DQogICAgIHByaW50ZigiLW0gPG51bT4gICAgICBtYXggbWVtb3J5IHRvIHVzZSBmb3IgaXRl
bXMgaW4gbWVnYWJ5dGVzLCBkZWZhdWx0IGlzIDY0IE1CXG4iKTsNCisgICAgcHJpbnRmKCItbyAg
ICAgICAgICAgIGNhbGwgbWFsbG9wdChNX01NQVBfTUFYLCAwKSwgd2hpY2ggcHJldmVudHMgbWFs
bG9jKCkgZnJvbSBcbiIpOw0KKyAgICBwcmludGYoIiAgICAgICAgICAgICAgIGFsbG9jYXRpbmcg
bWVtb3J5IHZpYSBtbWFwKCkgLSB1c2VmdWwgd2l0aCBzdGF0aWMgbWVtY2FjaGVkXG4iKTsNCiAg
ICAgcHJpbnRmKCItTSAgICAgICAgICAgIHJldHVybiBlcnJvciBvbiBtZW1vcnkgZXhoYXVzdGVk
IChyYXRoZXIgdGhhbiByZW1vdmluZyBpdGVtcylcbiIpOw0KICAgICBwcmludGYoIi1jIDxudW0+
ICAgICAgbWF4IHNpbXVsdGFuZW91cyBjb25uZWN0aW9ucywgZGVmYXVsdCBpcyAxMDI0XG4iKTsN
CiAgICAgcHJpbnRmKCItayAgICAgICAgICAgIGxvY2sgZG93biBhbGwgcGFnZWQgbWVtb3J5XG4i
KTsNCkBAIC0xMjcxLDE0ICsxMjczLDE2IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFy
Z3YpIHsNCiAgICAgaW50IG1heGNvcmUgPSAwOw0KICAgICBjaGFyICp1c2VybmFtZSA9IDA7DQog
ICAgIHN0cnVjdCBwYXNzd2QgKnB3Ow0KKyAgICBzdHJ1Y3QgcGFzc3dkIHB3czsNCiAgICAgc3Ry
dWN0IHNpZ2FjdGlvbiBzYTsNCiAgICAgc3RydWN0IHJsaW1pdCBybGltOw0KKyAgICBjaGFyICpw
dHI7DQogDQogICAgIC8qIGluaXQgc2V0dGluZ3MgKi8NCiAgICAgc2V0dGluZ3NfaW5pdCgpOw0K
IA0KICAgICAvKiBwcm9jZXNzIGFyZ3VtZW50cyAqLw0KLSAgICB3aGlsZSAoKGMgPSBnZXRvcHQo
YXJnYywgYXJndiwgInA6bTpNYzpraGlydmRsOnU6IikpICE9IC0xKSB7DQorICAgIHdoaWxlICgo
YyA9IGdldG9wdChhcmdjLCBhcmd2LCAicDptOm9NYzpraGlydmRsOnU6IikpICE9IC0xKSB7DQog
ICAgICAgICBzd2l0Y2ggKGMpIHsNCiAgICAgICAgIGNhc2UgJ3AnOg0KICAgICAgICAgICAgIHNl
dHRpbmdzLnBvcnQgPSBhdG9pKG9wdGFyZyk7DQpAQCAtMTI4Niw2ICsxMjkwLDExIEBAIGludCBt
YWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsNCiAgICAgICAgIGNhc2UgJ20nOg0KICAgICAg
ICAgICAgIHNldHRpbmdzLm1heGJ5dGVzID0gYXRvaShvcHRhcmcpKjEwMjQqMTAyNDsNCiAgICAg
ICAgICAgICBicmVhazsNCisJY2FzZSAnbyc6DQorCSAgICBpZiAobWFsbG9wdChNX01NQVBfTUFY
LCAwKSA9PSAwKSB7DQorCQlmcHJpbnRmKHN0ZGVyciwgIm1hbGxvcHQoTV9NTUFQX01BWCwgMCkg
ZmFpbGVkXG4iKTsNCisJICAgIH0NCisJICAgIGJyZWFrOw0KICAgICAgICAgY2FzZSAnTSc6DQog
ICAgICAgICAgICAgc2V0dGluZ3MuZXZpY3RfdG9fZnJlZSA9IDA7DQogICAgICAgICAgICAgYnJl
YWs7DQpAQCAtMTM4OCwxMyArMTM5NywzMiBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiph
cmd2KSB7DQogICAgICAgICBleGl0KDEpOw0KICAgICB9DQogDQorICAgIC8qIGxvY2sgcGFnZWQg
bWVtb3J5IGlmIG5lZWRlZA0KKwlhcyB0aGlzIGlzIHByaXZlbGVnZWQgb3BlcmF0aW9uIGRvIGl0
IGJlZm9yZSBzZXR1aWQoKQ0KKyAgICAgKi8NCisgICAgaWYgKGxvY2tfbWVtb3J5KSB7DQorI2lm
ZGVmIEhBVkVfTUxPQ0tBTEwNCisgICAgICAgIG1sb2NrYWxsKE1DTF9DVVJSRU5UIHwgTUNMX0ZV
VFVSRSk7DQorI2Vsc2UNCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAid2FybmluZzogbWxvY2th
bGwoKSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uICBwcm9jZWVkaW5nIHdpdGhvdXQu
XG4iKTsNCisjZW5kaWYNCisgICAgfQ0KKw0KICAgICAvKiBsb3NlIHJvb3QgcHJpdmlsZWdlcyBp
ZiB3ZSBoYXZlIHRoZW0gKi8NCiAgICAgaWYgKGdldHVpZCgpPT0gMCB8fCBnZXRldWlkKCk9PTAp
IHsNCiAgICAgICAgIGlmICh1c2VybmFtZT09MCB8fCAqdXNlcm5hbWU9PSdcMCcpIHsNCiAgICAg
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNhbid0IHJ1biBhcyByb290IHdpdGhvdXQgdGhlIC11
IHN3aXRjaFxuIik7DQogICAgICAgICAgICAgcmV0dXJuIDE7DQogICAgICAgICB9DQotICAgICAg
ICBpZiAoKHB3ID0gZ2V0cHduYW0odXNlcm5hbWUpKSA9PSAwKSB7DQorCS8qIGFsdGVybmF0aXZl
ICItdSB1aWQvZ2lkIiBub3RhdGlvbiBpcyBuZWVkZWQgd2hlbiB3ZSBkbyBub3Qgd2FudCBuc3Mg
bGlicmFyaWVzDQorCSAgICB0byBiZSBsb2FkZWQgZm9yIGdldHB3bmFtKCkuIHZlcnkgdXNlZnVs
IHdpdGggc3RhdGljIHZlcnNpb24gb2YgbWVtY2FjaGVkLiAqLw0KKwlpZiAoIChwdHIgPSBzdHJj
aHIodXNlcm5hbWUsICcvJykpICkgew0KKwkgICAgKnB0cisrID0gMDsNCisJICAgIHB3cy5wd191
aWQgPSBhdG9pKHVzZXJuYW1lKTsNCisJICAgIHB3cy5wd19naWQgPSBhdG9pKHB0cik7DQorCSAg
ICBwdyA9ICZwd3M7DQorCX0NCisgICAgICAgIGVsc2UgaWYgKChwdyA9IGdldHB3bmFtKHVzZXJu
YW1lKSkgPT0gMCkgew0KICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2FuJ3QgZmluZCB0
aGUgdXNlciAlcyB0byBzd2l0Y2ggdG9cbiIsIHVzZXJuYW1lKTsNCiAgICAgICAgICAgICByZXR1
cm4gMTsNCiAgICAgICAgIH0NCkBAIC0xNDI0LDE1ICsxNDUyLDYgQEAgaW50IG1haW4gKGludCBh
cmdjLCBjaGFyICoqYXJndikgew0KICAgICBjb25uX2luaXQoKTsNCiAgICAgc2xhYnNfaW5pdChz
ZXR0aW5ncy5tYXhieXRlcyk7DQogDQotICAgIC8qIGxvY2sgcGFnZWQgbWVtb3J5IGlmIG5lZWRl
ZCAqLw0KLSAgICBpZiAobG9ja19tZW1vcnkpIHsNCi0jaWZkZWYgSEFWRV9NTE9DS0FMTA0KLSAg
ICAgICAgbWxvY2thbGwoTUNMX0NVUlJFTlQgfCBNQ0xfRlVUVVJFKTsNCi0jZWxzZQ0KLSAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJ3YXJuaW5nOiBtbG9ja2FsbCgpIG5vdCBzdXBwb3J0ZWQgb24g
dGhpcyBwbGF0Zm9ybS4gIHByb2NlZWRpbmcgd2l0aG91dC5cbiIpOw0KLSNlbmRpZg0KLSAgICB9
DQotDQogICAgIC8qDQogICAgICAqIGlnbm9yZSBTSUdQSVBFIHNpZ25hbHM7IHdlIGNhbiB1c2Ug
ZXJybm89PUVQSVBFIGlmIHdlDQogICAgICAqIG5lZWQgdGhhdCBpbmZvcm1hdGlvbg0K

--=-iECY7rnbneezBaJCQJHk--

--=-n/CEoqZZEeLRE3kgmMl9
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: =?koi8-r?Q?=FC=D4=C1?= =?koi8-r?Q?_=DE=C1=D3=D4=D8?=
	=?koi8-r?Q?_=D3=CF=CF=C2=DD=C5=CE=C9=D1?=
	=?koi8-r?Q?_=D0=CF=C4=D0=C9=D3=C1=CE=C1?=
	=?koi8-r?Q?_=C3=C9=C6=D2=CF=D7=CF=CA?=
	=?koi8-r?Q?_=D0=CF=C4=D0=C9=D3=D8=C0?=

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQBA0GAstpDBPmRJgw0RAm/5AJ9/As2hGfrl+IB/Uz9xfxU4XyFwHwCgo/hd
ZtTkVJoYD9GcVwS43xs2zZ0=
=gIG7
-----END PGP SIGNATURE-----

--=-n/CEoqZZEeLRE3kgmMl9--