On Wed, Oct 23, 2002 at 08:41:16PM -0400, Abdul Latip wrote:
> > if (error_temp(errno)) usleep(100);
> > else _exit(111);
>
> Mengapa hanya "100" usleepnya?
uhuk-uhuk .. :-) biar lebih cepet ha..ha..
asumsi saya, forking qmail-rspawn tidak butuh resources untuk
melakukan memory mapping yang besar (jadi relatif sangat cepat).
maunya malah tanpa usleep() tapi kayaknya gimana gitu :-)
selain itu, worst case, yang dibutuhkan adalah memberi waktu buat
sekian concurrent exec (qmail-rspawn fork-exec qmail-remote).
ya, ini hanya dugaan saya saja, berhubung sampai sekarang
saya belum tahu kenapa saya bisa menemukan EAGAIN untuk
fork (hasil 'random' strace). padahal memory cukup, dari
1GB kira-kira hanya digunakan 700MB saja (belum dikurangi
alokasi untuk cache dan buffer).
toh akan diulang lagi kalau gagal. memang bisa saja proses
perulangan ini justru pemborosan.
maunya itu saya naikkan sedikit demi sedikit, sampai menemukan
nilai yang optimal. ada yang bisa kasih hint?
maunya sih pakai ilmu kebatinan atau paranormal saja, jadi
tinggal tutup mata, konsentrasi, masalahnya langsung ketahuan
he..he..
tapi, contoh yang saya berikan kemarin itu benar-benar idiot
dan bikin malu negara, bangsa dan tanah air saja :-)
parent (qmail-rspawn) tidak boleh exit (!), mestinya:
while ((f = vfork()) < 0)
{
if (error_temp(errno)) usleep(100);
else return f; /* bukannya exit, idiot! */
}
atau mungkin cukup:
while (((f = vfork()) < 0) && error_temp(errno)) usleep(100);
sejauh ini hanya bisa mencapai concurrency 3200 sekian remote
deliveries. mungkin kalau jumlah subscriber lebih banyak atau
saya kasih sleep(86400) di qmail-remote, 4000 bisa tercapai :-)))
Salam,
P.Y. Adi Prasaja
--
Right or wrong my list. Unsubscribe option is currently unavailable.
Indeed, it's available upon request .. but: cepek dulu donk!