{"action":"created","issue":{"url":"https://api.github.com/repos/zfsonlinux/zfs/issues/1971","labels_url":"https://api.github.com/repos/zfsonlinux/zfs/issues/1971/labels{/name}","comments_url":"https://api.github.com/repos/zfsonlinux/zfs/issues/1971/comments","events_url":"https://api.github.com/repos/zfsonlinux/zfs/issues/1971/events","html_url":"https://github.com/zfsonlinux/zfs/pull/1971","id":24260485,"number":1971,"title":"Remove kmutex_t & kcondvar out of arc_buf_hdr_t","user":{"login":"DeHackEd","id":1657601,"avatar_url":"https://avatars.githubusercontent.com/u/1657601?v=3","gravatar_id":"","url":"https://api.github.com/users/DeHackEd","html_url":"https://github.com/DeHackEd","followers_url":"https://api.github.com/users/DeHackEd/followers","following_url":"https://api.github.com/users/DeHackEd/following{/other_user}","gists_url":"https://api.github.com/users/DeHackEd/gists{/gist_id}","starred_url":"https://api.github.com/users/DeHackEd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DeHackEd/subscriptions","organizations_url":"https://api.github.com/users/DeHackEd/orgs","repos_url":"https://api.github.com/users/DeHackEd/repos","events_url":"https://api.github.com/users/DeHackEd/events{/privacy}","received_events_url":"https://api.github.com/users/DeHackEd/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/zfsonlinux/zfs/labels/Bug%20-%20Minor","name":"Bug - Minor","color":"e11d21"},{"url":"https://api.github.com/repos/zfsonlinux/zfs/labels/Difficulty%20-%20Medium","name":"Difficulty - Medium","color":"207de5"},{"url":"https://api.github.com/repos/zfsonlinux/zfs/labels/Memory%20Management","name":"Memory Management","color":"ffff33"},{"url":"https://api.github.com/repos/zfsonlinux/zfs/labels/Performance","name":"Performance","color":"DDDDDD"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":13,"created_at":"2013-12-13T17:31:46Z","updated_at":"2015-05-18T18:23:51Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/zfsonlinux/zfs/pulls/1971","html_url":"https://github.com/zfsonlinux/zfs/pull/1971","diff_url":"https://github.com/zfsonlinux/zfs/pull/1971.diff","patch_url":"https://github.com/zfsonlinux/zfs/pull/1971.patch"},"body":"Under Linux these data types together consume around 100 bytes of space.\r\nHaving them in the arc_buf_hdr_t makes them nearly 50% larger than they\r\nwould be otherwise. When lock debugging is enabled it gets even larger.\r\n\r\nThis patch moves them to a single global array to be shared similar to\r\nhow the znode hold locks in zfs_sb work. We're trading some potential\r\nfor artificial lock contention for drastically smaller kernel memory\r\nobjects.\r\n"},"comment":{"url":"https://api.github.com/repos/zfsonlinux/zfs/issues/comments/103159857","html_url":"https://github.com/zfsonlinux/zfs/pull/1971#issuecomment-103159857","issue_url":"https://api.github.com/repos/zfsonlinux/zfs/issues/1971","id":103159857,"user":{"login":"behlendorf","id":148917,"avatar_url":"https://avatars.githubusercontent.com/u/148917?v=3","gravatar_id":"","url":"https://api.github.com/users/behlendorf","html_url":"https://github.com/behlendorf","followers_url":"https://api.github.com/users/behlendorf/followers","following_url":"https://api.github.com/users/behlendorf/following{/other_user}","gists_url":"https://api.github.com/users/behlendorf/gists{/gist_id}","starred_url":"https://api.github.com/users/behlendorf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/behlendorf/subscriptions","organizations_url":"https://api.github.com/users/behlendorf/orgs","repos_url":"https://api.github.com/users/behlendorf/repos","events_url":"https://api.github.com/users/behlendorf/events{/privacy}","received_events_url":"https://api.github.com/users/behlendorf/received_events","type":"User","site_admin":false},"created_at":"2015-05-18T18:23:51Z","updated_at":"2015-05-18T18:23:51Z","body":"Oh, one more thing.  This is subjective but the collision numbers feel high to me for only four concurrent bonnie++ processes.  It would be useful to verify that in fact you're seeing a good distribution across the hash buckets.  You could do this by implementing another stat similar to the arcstat_hash_chains.  Just keep track of the first time a hash bucket is used and increment a counter.  It should rapidly approach the hash size if this are working properly, if it doesn't that's a concern."}}