diff for duplicates of <1431988690.15857.31.camel@intel.com> diff --git a/a/1.txt b/N1/1.txt index 1a61b95..5f6e80f 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -144,31 +144,31 @@ other threads/CPUs that resolve to the same spinlock to run. > > inside btt_make_request: > -> ¦ /* Wait if the new block is being read from */ -> ¦ for (i = 0; i < arena->nfree; i++) -> 2.98 ¦ ? je 2b4 -> 0.05 ¦ mov 0x60(%r14),%rax -> 0.00 ¦ mov %ebx,%edx -> ¦ xor %esi,%esi -> 0.03 ¦ or $0x80000000,%edx -> 0.05 ¦ nop -> ¦ while (arena->rtt[i] == (RTT_VALID | new_postmap)) -> 22.98 ¦290: mov %esi,%edi -> 0.01 ¦ cmp %edx,(%rax,%rdi,4) -> 30.97 ¦ lea 0x0(,%rdi,4),%rcx -> 21.05 ¦ ? jne 2ab -> ¦ nop -> ¦ } -> ¦ -> ¦ /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */ -> ¦ static inline void rep_nop(void) -> ¦ { -> ¦ asm volatile("rep; nop" ::: "memory"); -> ¦2a0: pause -> ¦ mov 0x60(%r14),%rax -> ¦ cmp (%rax,%rcx,1),%edx -> ¦ ? je 2a0 -> ¦ } +> ¦ /* Wait if the new block is being read from */ +> ¦ for (i = 0; i < arena->nfree; i++) +> 2.98 ¦ ? je 2b4 +> 0.05 ¦ mov 0x60(%r14),%rax +> 0.00 ¦ mov %ebx,%edx +> ¦ xor %esi,%esi +> 0.03 ¦ or $0x80000000,%edx +> 0.05 ¦ nop +> ¦ while (arena->rtt[i] == (RTT_VALID | new_postmap)) +> 22.98 ¦290: mov %esi,%edi +> 0.01 ¦ cmp %edx,(%rax,%rdi,4) +> 30.97 ¦ lea 0x0(,%rdi,4),%rcx +> 21.05 ¦ ? jne 2ab +> ¦ nop +> ¦ } +> ¦ +> ¦ /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */ +> ¦ static inline void rep_nop(void) +> ¦ { +> ¦ asm volatile("rep; nop" ::: "memory"); +> ¦2a0: pause +> ¦ mov 0x60(%r14),%rax +> ¦ cmp (%rax,%rcx,1),%edx +> ¦ ? je 2a0 +> ¦ } > > > ddpt zeroing out @@ -200,3 +200,4 @@ Thanks, this is great analysis - I'd be quite interested in how these numbers look like with the two changes Dan mentioned. -Vishal +ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥ diff --git a/a/content_digest b/N1/content_digest index a27ec95..6faf2f8 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -13,7 +13,7 @@ Dan J <dan.j.williams@intel.com> axboe@fb.com <axboe@fb.com> hpa@zytor.com <hpa@zytor.com> - linux-nvdimm@lists.01.org <linux-nvdimm@lists.01.org> + linux-nvdimm@lists.01.org <linux-nvdimm@ml01.01.org> gregkh@linuxfoundation.org <gregkh@linuxfoundation.org> luto@amacapital.net <luto@amacapital.net> " david@fromorbit.com <david@fromorbit.com>\0" @@ -165,31 +165,31 @@ "> \n" "> inside btt_make_request:\n" "> \n" - "> \302\246 /* Wait if the new block is being read from */\n" - "> \302\246 for (i = 0; i < arena->nfree; i++)\n" - "> 2.98 \302\246 ? je 2b4\n" - "> 0.05 \302\246 mov 0x60(%r14),%rax\n" - "> 0.00 \302\246 mov %ebx,%edx\n" - "> \302\246 xor %esi,%esi\n" - "> 0.03 \302\246 or $0x80000000,%edx\n" - "> 0.05 \302\246 nop\n" - "> \302\246 while (arena->rtt[i] == (RTT_VALID | new_postmap))\n" - "> 22.98 \302\246290: mov %esi,%edi\n" - "> 0.01 \302\246 cmp %edx,(%rax,%rdi,4)\n" - "> 30.97 \302\246 lea 0x0(,%rdi,4),%rcx\n" - "> 21.05 \302\246 ? jne 2ab\n" - "> \302\246 nop\n" - "> \302\246 }\n" - "> \302\246\n" - "> \302\246 /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */\n" - "> \302\246 static inline void rep_nop(void)\n" - "> \302\246 {\n" - "> \302\246 asm volatile(\"rep; nop\" ::: \"memory\");\n" - "> \302\2462a0: pause\n" - "> \302\246 mov 0x60(%r14),%rax\n" - "> \302\246 cmp (%rax,%rcx,1),%edx\n" - "> \302\246 ? je 2a0\n" - "> \302\246 }\n" + "> \303\202\302\246 /* Wait if the new block is being read from */\n" + "> \303\202\302\246 for (i = 0; i < arena->nfree; i++)\n" + "> 2.98 \303\202\302\246 ? je 2b4\n" + "> 0.05 \303\202\302\246 mov 0x60(%r14),%rax\n" + "> 0.00 \303\202\302\246 mov %ebx,%edx\n" + "> \303\202\302\246 xor %esi,%esi\n" + "> 0.03 \303\202\302\246 or $0x80000000,%edx\n" + "> 0.05 \303\202\302\246 nop\n" + "> \303\202\302\246 while (arena->rtt[i] == (RTT_VALID | new_postmap))\n" + "> 22.98 \303\202\302\246290: mov %esi,%edi\n" + "> 0.01 \303\202\302\246 cmp %edx,(%rax,%rdi,4)\n" + "> 30.97 \303\202\302\246 lea 0x0(,%rdi,4),%rcx\n" + "> 21.05 \303\202\302\246 ? jne 2ab\n" + "> \303\202\302\246 nop\n" + "> \303\202\302\246 }\n" + "> \303\202\302\246\n" + "> \303\202\302\246 /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */\n" + "> \303\202\302\246 static inline void rep_nop(void)\n" + "> \303\202\302\246 {\n" + "> \303\202\302\246 asm volatile(\"rep; nop\" ::: \"memory\");\n" + "> \303\202\302\2462a0: pause\n" + "> \303\202\302\246 mov 0x60(%r14),%rax\n" + "> \303\202\302\246 cmp (%rax,%rcx,1),%edx\n" + "> \303\202\302\246 ? je 2a0\n" + "> \303\202\302\246 }\n" "> \n" "> \n" "> ddpt zeroing out\n" @@ -220,6 +220,7 @@ "Thanks, this is great analysis - I'd be quite interested in how these\n" "numbers look like with the two changes Dan mentioned.\n" "\n" - "\t-Vishal" + "\t-Vishal\n" + "\303\277\303\264\303\250\302\272{.n\303\207+\302\211\302\267\302\237\302\256\302\211\302\255\302\206+%\302\212\303\213\303\277\302\261\303\251\303\235\302\266\027\302\245\302\212w\303\277\302\272{.n\303\207+\302\211\302\267\302\245\302\212{\302\261\303\276G\302\253\302\235\303\251\303\277\302\212{ay\302\272\035\303\212\302\207\303\232\302\231\303\253,j\a\302\255\302\242f\302\243\302\242\302\267h\302\232\302\217\303\257\302\201\303\252\303\277\302\221\303\252\303\247z_\303\250\302\256\003(\302\255\303\251\302\232\302\216\302\212\303\235\302\242j\"\302\235\303\272\032\302\266\033m\302\247\303\277\303\277\302\276\a\302\253\303\276G\302\253\302\235\303\251\303\277\302\242\302\270?\302\231\302\250\303\250\302\255\303\232&\302\243\303\270\302\247~\302\217\303\241\302\266iO\302\225\303\246\302\254z\302\267\302\232v\303\230^\024\004\032\302\266\033m\302\247\303\277\303\277\303\203\f\303\277\302\266\303\254\303\277\302\242\302\270?\302\226I\302\245" -14d1eb1b385416b3b5948363df4fde8112f6a8e8da7fb4d914eab7db4ac88eef +f7657418467667a4037c460f9c207bb6672f6983fd5165684a45c8a05a0f816a
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.