From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19557 invoked by alias); 16 Sep 2016 16:18:51 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 39361 Received: (qmail 13008 invoked from network); 16 Sep 2016 16:18:51 -0000 X-Qmail-Scanner-Diagnostics: from mail-vk0-f42.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(209.85.213.42):SA:0(0.0/5.0):. Processed in 0.912152 secs); 16 Sep 2016 16:18:51 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,SPF_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: mohamed@elawadi.net X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _netblocks.google.com designates 209.85.213.42 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elawadi-net.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=Y1h35IMXR6mKZJb6xP3LxBoME9NLQFfMJGYVgqye358=; b=Kd8TPH2VDKk99vAd3sr+qIn0tbSk5P/ji99NFDTrcml3OBfXJoL6ovVDPOzOHximWi 0sXALM8sYNdhoF6ffOIlD8pBsuH4oIG7g3GI+N+6GtyNV90IqxusTdH0zm5Ct1DCoYsI o0N6djqUYrXBakhNHYyuKMsVIW/+PKUZs1R1KkXqAKw+HhBz8gEtzPhuJVD7DCHbXPbu eMiImowGx2HipZP580CExqq5fymITuYsX98agzzFDrZzqx2JZ2PYKLlsRjaqc2FqP+tF ImsQxvkcGIngZQZqT97ePvKfzFtIVcaZCkfTBhd630GgCwkiEbIgF3jw8o5p9IHmdxVw s7+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=Y1h35IMXR6mKZJb6xP3LxBoME9NLQFfMJGYVgqye358=; b=blT85UBTRlfwFheRs9K0vYkEpeN4cB508ZvpVKKpk4U1MvOJSapKvE57+aXbFKxByW X6jZ0iHlz/1h88VwYWP24FQRimrt+Bcop1FHGbO+1N0wL4gEuwahFQgX7WmO4bxGPhb2 yu/uMSc67UjS88CwIsjqJ9h9PpKdcu6k8l6w4HomheipGYHImB2o+FWyiAl77N/08vCN z+7uNiXXqg+cA3+1d1zwnbDrygfI6fvWtFttdpUjj/9qnF15OaREqw1IwO7rIESh2KgR KOF0uQzIBeD7gmyqnZcW+q4OKOvF9OCUe3pzPWMvx358c9GjosJtAOoaLwO6F2Qq9yqH ZWAg== X-Gm-Message-State: AE9vXwNjNbIMA4v63LabKbCX8FIqNvQFdMMkSYVDeSA+x4OVRsW/3s5+oHcIGfeeUtKcUtiOwBBFG3bN5UYJXQ== X-Received: by 10.31.53.71 with SMTP id c68mr3122317vka.104.1474036675874; Fri, 16 Sep 2016 07:37:55 -0700 (PDT) MIME-Version: 1.0 X-Originating-IP: [196.147.91.103] From: Mohamed Elawadi Date: Fri, 16 Sep 2016 16:37:55 +0200 Message-ID: Subject: Performance increase by limiting the call to sygprocmask To: zsh-workers@zsh.org Content-Type: multipart/mixed; boundary=001a1144724a73e39a053ca0e8fc --001a1144724a73e39a053ca0e8fc Content-Type: multipart/alternative; boundary=001a1144724a73e396053ca0e8fa --001a1144724a73e396053ca0e8fa Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hello, I found that sygprocmask system call is being called lots of times during the startup of zsh. most of them were inside the function `shingetline`. So This patch add a flag into the function, so that it only call `winch_(un)?block` witch make the system call only if needed. I have included a benchmarking test after and before the patch, as you can see it got rid of 90% of the system calls, and zsh startup and exit times got reduced by 20%. Kind regards, -- Mohamed Elawadi mohamed@elawadi.net =E2=9E=9C code git:(master) =E2=9C=97 /usr/bin/time -p bash -c 'for i in $= (seq 1 100); do zsh -i -c "exit"; done' real 29.93 user 16.90 sys 7.84 =E2=9E=9C code git:(master) =E2=9C=97 strace -cf zsh -i -c 'exit' % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 68.12 0.012507 0 169032 rt_sigprocmask 24.79 0.004552 71 64 28 wait4 3.13 0.000574 2 271 getdents ------ ----------- ----------- --------- --------- ---------------- 100.00 0.018361 180201 1465 total After applying the patch =E2=9E=9C code git:(master) =E2=9C=97 /usr/bin/time -p bash -c 'for i in $= (seq 1 100); do zsh -i -c "exit"; done' real 25.08 user 14.52 sys 5.49 =E2=9E=9C code git:(master) =E2=9C=97 strace -cf zsh -i -c 'exit' % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 69.71 0.004623 72 64 28 wait4 8.40 0.000557 0 16364 rt_sigprocmask 4.27 0.000283 9 33 clone 2.86 0.000190 1 271 getdents ------ ----------- ----------- --------- --------- ---------------- 100.00 0.006632 27476 1464 total --001a1144724a73e396053ca0e8fa Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+SGVsbG8sPGJyPjxicj5JIGZvdW5kIHRoYXQgc3lncHJvY21hc2sgc3lz dGVtIGNhbGwgaXMgYmVpbmcgY2FsbGVkIGxvdHMgb2YgdGltZXMgZHVyaW5nIHRoZSBzdGFydHVw IG9mIHpzaC4gbW9zdCBvZiB0aGVtIHdlcmUgaW5zaWRlIHRoZSBmdW5jdGlvbiBgc2hpbmdldGxp bmVgLjxicj48YnI+U28gVGhpcyBwYXRjaCBhZGQgYSBmbGFnIGludG8gdGhlIGZ1bmN0aW9uLCBz byB0aGF0IGl0IG9ubHkgY2FsbCBgd2luY2hfKHVuKT9ibG9ja2Agd2l0Y2ggbWFrZSB0aGUgc3lz dGVtIGNhbGwgb25seSBpZiBuZWVkZWQuPGJyPjxicj5JIGhhdmUgaW5jbHVkZWQgYSBiZW5jaG1h cmtpbmcgdGVzdCBhZnRlciBhbmQgYmVmb3JlIHRoZSBwYXRjaCwgYXMgeW91IGNhbiBzZWUgaXQg Z290IHJpZCBvZiA5MCUgb2YgdGhlIHN5c3RlbSBjYWxscywgYW5kIHpzaCBzdGFydHVwIGFuZCBl eGl0IHRpbWVzIGdvdCByZWR1Y2VkIGJ5IDIwJS48YnI+PGJyPktpbmQgcmVnYXJkcyw8YnI+PGJy Pi0tPGJyPk1vaGFtZWQgRWxhd2FkaTxicj48YSBocmVmPSJtYWlsdG86bW9oYW1lZEBlbGF3YWRp Lm5ldCI+bW9oYW1lZEBlbGF3YWRpLm5ldDwvYT48YnI+PGJyPuKenMKgIGNvZGUgZ2l0OihtYXN0 ZXIpIOKclyAvdXNyL2Jpbi90aW1lIC1wIGJhc2ggLWMgJiMzOTtmb3IgaSBpbiAkKHNlcSAxIDEw MCk7IGRvIHpzaCAtaSAtYyAmcXVvdDtleGl0JnF1b3Q7OyBkb25lJiMzOTs8YnI+cmVhbCAyOS45 Mzxicj51c2VyIDE2LjkwPGJyPnN5cyA3Ljg0PGJyPjxicj7inpzCoCBjb2RlIGdpdDoobWFzdGVy KSDinJcgc3RyYWNlIC1jZiB6c2ggLWkgLWMgJiMzOTtleGl0JiMzOTs8YnI+JSB0aW1lwqDCoMKg wqAgc2Vjb25kc8KgIHVzZWNzL2NhbGzCoMKgwqDCoCBjYWxsc8KgwqDCoCBlcnJvcnMgc3lzY2Fs bDxicj4tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLS0tLS0tIC0tLS0tLS0tLSAt LS0tLS0tLS0tLS0tLS0tPGJyPsKgNjguMTLCoMKgwqAgMC4wMTI1MDfCoMKgwqDCoMKgwqDCoMKg wqDCoCAwwqDCoMKgIDE2OTAzMsKgwqDCoMKgwqDCoMKgwqDCoMKgIHJ0X3NpZ3Byb2NtYXNrPGJy PsKgMjQuNznCoMKgwqAgMC4wMDQ1NTLCoMKgwqDCoMKgwqDCoMKgwqAgNzHCoMKgwqDCoMKgwqDC oCA2NMKgwqDCoMKgwqDCoMKgIDI4IHdhaXQ0PGJyPsKgIDMuMTPCoMKgwqAgMC4wMDA1NzTCoMKg wqDCoMKgwqDCoMKgwqDCoCAywqDCoMKgwqDCoMKgIDI3McKgwqDCoMKgwqDCoMKgwqDCoMKgIGdl dGRlbnRzIDxicj4tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLS0tLS0tIC0tLS0t LS0tLSAtLS0tLS0tLS0tLS0tLS0tPGJyPjEwMC4wMMKgwqDCoCAwLjAxODM2McKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAxODAyMDHCoMKgwqDCoMKgIDE0NjUgdG90YWw8YnI+PGJyPkFm dGVyIGFwcGx5aW5nIHRoZSBwYXRjaDxicj48YnI+4p6cwqAgY29kZSBnaXQ6KG1hc3Rlcikg4pyX IC91c3IvYmluL3RpbWUgLXAgYmFzaCAtYyAmIzM5O2ZvciBpIGluICQoc2VxIDEgMTAwKTsgZG8g enNoIC1pIC1jICZxdW90O2V4aXQmcXVvdDs7IGRvbmUmIzM5Ozxicj5yZWFsIDI1LjA4PGJyPnVz ZXIgMTQuNTI8YnI+c3lzIDUuNDk8YnI+PGJyPuKenMKgIGNvZGUgZ2l0OihtYXN0ZXIpIOKclyBz dHJhY2UgLWNmIHpzaCAtaSAtYyAmIzM5O2V4aXQmIzM5Ozxicj48YnI+JSB0aW1lwqDCoMKgwqAg c2Vjb25kc8KgIHVzZWNzL2NhbGzCoMKgwqDCoCBjYWxsc8KgwqDCoCBlcnJvcnMgc3lzY2FsbDxi cj4tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLS0tLS0tIC0tLS0tLS0tLSAtLS0t LS0tLS0tLS0tLS0tPGJyPsKgNjkuNzHCoMKgwqAgMC4wMDQ2MjPCoMKgwqDCoMKgwqDCoMKgwqAg NzLCoMKgwqDCoMKgwqDCoCA2NMKgwqDCoMKgwqDCoMKgIDI4IHdhaXQ0PGJyPsKgIDguNDDCoMKg wqAgMC4wMDA1NTfCoMKgwqDCoMKgwqDCoMKgwqDCoCAwwqDCoMKgwqAgMTYzNjTCoMKgwqDCoMKg wqDCoMKgwqDCoCBydF9zaWdwcm9jbWFzazxicj7CoCA0LjI3wqDCoMKgIDAuMDAwMjgzwqDCoMKg wqDCoMKgwqDCoMKgwqAgOcKgwqDCoMKgwqDCoMKgIDMzwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2xv bmU8YnI+wqAgMi44NsKgwqDCoCAwLjAwMDE5MMKgwqDCoMKgwqDCoMKgwqDCoMKgIDHCoMKgwqDC oMKgwqAgMjcxwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0ZGVudHM8YnI+LS0tLS0tIC0tLS0tLS0t LS0tIC0tLS0tLS0tLS0tIC0tLS0tLS0tLSAtLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLTxicj4x MDAuMDDCoMKgwqAgMC4wMDY2MzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAyNzQ3 NsKgwqDCoMKgwqAgMTQ2NCB0b3RhbDxicj48YnI+PC9kaXY+DQo= --001a1144724a73e396053ca0e8fa-- --001a1144724a73e39a053ca0e8fc Content-Type: text/x-patch; charset=US-ASCII; name="0001-call-winch_block-inside-shingetline-only-if-needed.patch" Content-Disposition: attachment; filename="0001-call-winch_block-inside-shingetline-only-if-needed.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_it5vdbyr0 RnJvbSBhYjM2MjRjMjkwMTAwN2U5OTFlZmM5NjI0ZmE4ZDU1YzBiMTUwMTNmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNb2hhbWVkIEVsYXdhZGkgPG1vaGFtZWRAZWxhd2FkaS5uZXQ+ CkRhdGU6IEZyaSwgMTYgU2VwIDIwMTYgMTY6MjQ6NTggKzAyMDAKU3ViamVjdDogW1BBVENIXSBj YWxsIHdpbmNoX2Jsb2NrIGluc2lkZSBzaGluZ2V0bGluZSBvbmx5IGlmIG5lZWRlZAoKLS0tCiBT cmMvaW5wdXQuYyB8IDE2ICsrKysrKysrKysrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNl cnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NyYy9pbnB1dC5jIGIvU3Jj L2lucHV0LmMKaW5kZXggZWI5NjhlYS4uN2RlNGU3NiAxMDA2NDQKLS0tIGEvU3JjL2lucHV0LmMK KysrIGIvU3JjL2lucHV0LmMKQEAgLTE0MiwxNyArMTQyLDI0IEBAIHNoaW5nZXRsaW5lKHZvaWQp CiAgICAgY2hhciBidWZbQlVGU0laXTsKICAgICBjaGFyICpwOwogICAgIGludCBxID0gcXVldWVf c2lnbmFsX2xldmVsKCk7CisgICAgaW50IHdpbmNoX2Jsb2NrZWQgPSAxOwogCiAgICAgcCA9IGJ1 ZjsKICAgICBmb3IgKDs7KSB7Ci0Jd2luY2hfdW5ibG9jaygpOworCWlmICh3aW5jaF9ibG9ja2Vk KSB7CisJCXdpbmNoX3VuYmxvY2soKTsKKwkJd2luY2hfYmxvY2tlZCA9IDA7CisJfQogCWRvbnRf cXVldWVfc2lnbmFscygpOwogCWRvIHsKIAkgICAgZXJybm8gPSAwOwogCSAgICBjID0gZmdldGMo YnNoaW4pOwogCX0gd2hpbGUgKGMgPCAwICYmIGVycm5vID09IEVJTlRSKTsKIAlpZiAoYyA8IDAg fHwgYyA9PSAnXG4nKSB7Ci0JICAgIHdpbmNoX2Jsb2NrKCk7CisJCWlmICghIHdpbmNoX2Jsb2Nr ZWQpIHsKKwkJCXdpbmNoX2Jsb2NrKCk7CisJCQl3aW5jaF9ibG9ja2VkID0gMTsKKwkJfQogCSAg ICByZXN0b3JlX3F1ZXVlX3NpZ25hbHMocSk7CiAJICAgIGlmIChjID09ICdcbicpCiAJCSpwKysg PSAnXG4nOwpAQCAtMTY5LDcgKzE3NiwxMCBAQCBzaGluZ2V0bGluZSh2b2lkKQogCX0gZWxzZQog CSAgICAqcCsrID0gYzsKIAlpZiAocCA+PSBidWYgKyBCVUZTSVogLSAxKSB7Ci0JICAgIHdpbmNo X2Jsb2NrKCk7CisJCWlmICghIHdpbmNoX2Jsb2NrZWQpIHsKKwkJCXdpbmNoX2Jsb2NrKCk7CisJ CQl3aW5jaF9ibG9ja2VkID0gMTsKKwkJfQogCSAgICBxdWV1ZV9zaWduYWxzKCk7CiAJICAgIGxp bmUgPSB6cmVhbGxvYyhsaW5lLCBsbCArIChwIC0gYnVmKSArIDEpOwogCSAgICBtZW1jcHkobGlu ZSArIGxsLCBidWYsIHAgLSBidWYpOwotLSAKMi41LjAKCg== --001a1144724a73e39a053ca0e8fc--