From: KOSAKI Motohiro Date: 2010-01-10T20:06:57+09:00 Subject: [ruby-dev:40017] Linuxで bm_vm3_thread_mutex.rb が刺さってしまい実行が完了しない --00151774041c2a3c0c047ccd6b8b Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit kosakiです trunk + fedora12 の組み合わせにおいて、bm_vm3_thread_mutex.rbの実行が完了しません。調査の結果、本当にデッドロックしているのではなく、デッドロックチェックが過剰に呼ばれすぎているのが原因だと分かりました。 要するに微妙なタイミングでレースに負けると毎回デッドロックチェックが走ってしまうのだが、ベンチが合計100万回mutex_lockするベンチなのでレースコンディションが、当初の予想ほどレアではなかったという事です。 添付パッチのように、何回かレースに負けてから初めてデッドロックを疑うようにロジックを変更したところ100倍以上速くなるようです。 VMに詳しい方のご意見をいただけると幸いです。 --00151774041c2a3c0c047ccd6b8b Content-Type: application/octet-stream; name="0001-fix-bm_vm3_thread_mutex.rb-problem.patch" Content-Disposition: attachment; filename="0001-fix-bm_vm3_thread_mutex.rb-problem.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g49pfbkw0 RnJvbSA4YTZmMjhjN2VlMDk0ZDViMDFiZjU3ODMzZGU2MjdkNmJlZjlhNzE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLT1NBS0kgTW90b2hpcm8gPGtvc2FraS5tb3RvaGlyb0BqcC5m dWppdHN1LmNvbT4KRGF0ZTogU3VuLCAxMCBKYW4gMjAxMCAxOTo0MDo1NyArMDkwMApTdWJqZWN0 OiBbUEFUQ0hdIGZpeCBibV92bTNfdGhyZWFkX211dGV4LnJiIHByb2JsZW0KClNpZ25lZC1vZmYt Ynk6IEtPU0FLSSBNb3RvaGlybyA8a29zYWtpLm1vdG9oaXJvQGpwLmZ1aml0c3UuY29tPgotLS0K IHRocmVhZC5jIHwgICAgOCArKysrKysrLQogMSBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdGhyZWFkLmMgYi90aHJlYWQuYwppbmRl eCAwNmE3ZGE0Li5iMGYwYzFhIDEwMDY0NAotLS0gYS90aHJlYWQuYworKysgYi90aHJlYWQuYwpA QCAtMzE3NCw2ICszMTc0LDcgQEAgcmJfbXV0ZXhfbG9jayhWQUxVRSBzZWxmKQogCSAgICBlbnVt IHJiX3RocmVhZF9zdGF0dXMgcHJldl9zdGF0dXMgPSB0aC0+c3RhdHVzOwogCSAgICBpbnQgbGFz dF90aHJlYWQgPSAwOwogCSAgICBzdHJ1Y3QgcmJfdW5ibG9ja19jYWxsYmFjayBvbGR1YmY7CisJ ICAgIGludCBndWVzc19kZWFkbG9jayA9IDA7CiAKIAkgICAgc2V0X3VuYmxvY2tfZnVuY3Rpb24o dGgsIGxvY2tfaW50ZXJydXB0LCBtdXRleCwgJm9sZHViZik7CiAJICAgIHRoLT5zdGF0dXMgPSBU SFJFQURfU1RPUFBFRF9GT1JFVkVSOwpAQCAtMzE5MSw4ICszMTkyLDEzIEBAIHJiX211dGV4X2xv Y2soVkFMVUUgc2VsZikKIAkgICAgcmVtb3ZlX3NpZ25hbF90aHJlYWRfbGlzdCh0aCk7CiAJICAg IHJlc2V0X3VuYmxvY2tfZnVuY3Rpb24odGgsICZvbGR1YmYpOwogCisJICAgIGlmIChpbnRlcnJ1 cHRlZCA9PSAyKQorCQkgICAgZ3Vlc3NfZGVhZGxvY2srKzsKKwkgICAgZWxzZQorCQkgICAgZ3Vl c3NfZGVhZGxvY2sgPSAwOworCiAJICAgIHRoLT5sb2NraW5nX211dGV4ID0gUWZhbHNlOwotCSAg ICBpZiAobXV0ZXgtPnRoICYmIGludGVycnVwdGVkID09IDIpIHsKKwkgICAgaWYgKG11dGV4LT50 aCAmJiBpbnRlcnJ1cHRlZCA9PSAyICYmIGd1ZXNzX2RlYWRsb2NrID4gMTAwKSB7CiAJCXJiX2No ZWNrX2RlYWRsb2NrKHRoLT52bSk7CiAJICAgIH0KIAkgICAgaWYgKHRoLT5zdGF0dXMgPT0gVEhS RUFEX1NUT1BQRURfRk9SRVZFUikgewotLSAKMS42LjYKCg== --00151774041c2a3c0c047ccd6b8b--