From: Eric Wong Date: 2010-10-05T06:56:41+09:00 Subject: [ruby-core:32689] [Ruby 1.9-Feature#3905][Open] rb_clear_cache_by_class() called often during GC for non-blocking I/O --mimepart_4caa4d952ddee_ef6bd45aac168e2 Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Feature #3905: rb_clear_cache_by_class() called often during GC for non-b= locking I/O http://redmine.ruby-lang.org/issues/show/3905 Author: Eric Wong Status: Open, Priority: Low Category: core, Target version: 1.9.x This still causes performance problems with frequent EAGAIN compared to 1= .9.1 While akr fixed extend to no longer clear cache with empty modules in r28= 813, the GC phase still scans and clears the cache when the extended object is= collected. ref: [ruby-core:32507], [ruby-core:32508] A proposed patch to add memoizing of extended objects with IO::Wait{Read,Writ}able is attached. Comments/feedback appreciated. ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4caa4d952ddee_ef6bd45aac168e2 Content-Type: text/x-diff; name=0001-error.c-rb_mod_sys_fail-use-subclass-and-cache.patch Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=0001-error.c-rb_mod_sys_fail-use-subclass-and-cache.patch RnJvbSBmMGMyNzRlOWU4NzYzNGY0NzUxNWE2OGJiMTg2OTNkOWQ4NDIzYmM4 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIFdvbmcgPG5v cm1hbHBlcnNvbkB5aGJ0Lm5ldD4KRGF0ZTogV2VkLCAyMiBTZXAgMjAxMCAx NzoyMDoyOCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIGVycm9yLmMgKHJiX21v ZF9zeXNfZmFpbCk6IHVzZSBzdWJjbGFzcyBhbmQgY2FjaGUKCldoaWxlIHIy ODgxMyBhdm9pZHMgY2xlYXJpbmcgdGhlIG1ldGhvZCBjYWNoZSB1cG9uIGV4 dGVuZGluZwp3aXRoIElPOjpXYWl0e1JlYWQsV3JpdH1hYmxlIG1vZHVsZXMs IHRoZSBtZXRob2QgY2FjaGUgc3RpbGwKZ2V0cyB3aGVuIHRoZSBleGNlcHRp b25zIGFyZSBnYXJiYWdlIGNvbGxlY3RlZC4KClJldXNpbmcgdGhlIHNhbWUg c3ViY2xhc3Mgbm93IHByZXZlbnRzIHJiX2NsZWFyX2NhY2hlX2J5X2NsYXNz KCkKZnJvbSBzaG93aW5nIHVwIGF0L25lYXIgdGhlIHRvcCBvZiBwcm9maWxl ciBvdXRwdXQuCi0tLQogZXJyb3IuYyB8ICAgNDAgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLQogMSBmaWxlcyBjaGFuZ2VkLCAz OCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2Vycm9yLmMgYi9lcnJvci5jCmluZGV4IDQ3OWNhZmYuLmJjN2VkZWYgMTAw NjQ0Ci0tLSBhL2Vycm9yLmMKKysrIGIvZXJyb3IuYwpAQCAtMjcsNiArMjcs OCBAQAogCiBleHRlcm4gY29uc3QgY2hhciBydWJ5X2Rlc2NyaXB0aW9uW107 CiAKK3N0YXRpYyBWQUxVRSBtb2Rfc3lzX2ZhaWxfY2FjaGU7CisKIHN0YXRp YyBjb25zdCBjaGFyICoKIHJiX3N0cmVycm5vKGludCBlcnIpCiB7CkBAIC0x NTQxLDggKzE1NDMsNDIgQEAgcmJfc3lzX2ZhaWwoY29uc3QgY2hhciAqbWVz ZykKIHZvaWQKIHJiX21vZF9zeXNfZmFpbChWQUxVRSBtb2QsIGNvbnN0IGNo YXIgKm1lc2cpCiB7Ci0gICAgVkFMVUUgZXhjID0gbWFrZV9lcnJub19leGMo bWVzZyk7Ci0gICAgcmJfZXh0ZW5kX29iamVjdChleGMsIG1vZCk7CisgICAg aW50IG4gPSBlcnJubzsKKyAgICBpbnQgbmVlZF9hc2V0X3RtcCA9IDA7Cisg ICAgVkFMVUUgc3VwZXJfY2xhc3M7CisgICAgVkFMVUUgY2FjaGVkX2NsYXNz OworICAgIFZBTFVFIHBlcl9jbGFzczsKKyAgICBWQUxVRSBleGM7CisgICAg VkFMVUUgYXJnOworCisgICAgZXJybm8gPSAwOworICAgIGlmIChuID09IDAp IHsKKwlyYl9idWcoInJiX21vZF9zeXNfZmFpbCglcykgLSBlcnJubyA9PSAw IiwgbWVzZyA/IG1lc2cgOiAiIik7CisgICAgfQorICAgIHN1cGVyX2NsYXNz ID0gZ2V0X3N5c2VycihuKTsKKworICAgIGlmICghIG1vZF9zeXNfZmFpbF9j YWNoZSkgeworCW1vZF9zeXNfZmFpbF9jYWNoZSA9IHJiX2hhc2hfbmV3KCk7 CisJcmJfZ2xvYmFsX3ZhcmlhYmxlKCZtb2Rfc3lzX2ZhaWxfY2FjaGUpOwor ICAgIH0KKyAgICBwZXJfY2xhc3MgPSByYl9oYXNoX2FyZWYobW9kX3N5c19m YWlsX2NhY2hlLCBzdXBlcl9jbGFzcyk7CisKKyAgICBpZiAoTklMX1AocGVy X2NsYXNzKSkgeworCW5lZWRfYXNldF90bXAgPSAxOworCXBlcl9jbGFzcyA9 IHJiX2hhc2hfbmV3KCk7CisgICAgfQorCisgICAgY2FjaGVkX2NsYXNzID0g cmJfaGFzaF9hcmVmKHBlcl9jbGFzcywgbW9kKTsKKyAgICBpZiAoTklMX1Ao Y2FjaGVkX2NsYXNzKSkgeworCWNhY2hlZF9jbGFzcyA9IHJiX29ial9kdXAo c3VwZXJfY2xhc3MpOworCXJiX2luY2x1ZGVfbW9kdWxlKGNhY2hlZF9jbGFz cywgbW9kKTsKKwlyYl9oYXNoX2FzZXQocGVyX2NsYXNzLCBtb2QsIGNhY2hl ZF9jbGFzcyk7CisJaWYgKG5lZWRfYXNldF90bXApCisJICAgIHJiX2hhc2hf YXNldChtb2Rfc3lzX2ZhaWxfY2FjaGUsIHN1cGVyX2NsYXNzLCBwZXJfY2xh c3MpOworICAgIH0KKworICAgIGFyZyA9IG1lc2cgPyByYl9zdHJfbmV3Miht ZXNnKSA6IFFuaWw7CisgICAgZXhjID0gcmJfY2xhc3NfbmV3X2luc3RhbmNl KDEsICZhcmcsIGNhY2hlZF9jbGFzcyk7CiAgICAgcmJfZXhjX3JhaXNlKGV4 Yyk7CiB9CiAKLS0gCjEuNy4zLjQuZzJkNzUKCg== --mimepart_4caa4d952ddee_ef6bd45aac168e2--