<html>
  <head>
    <meta content="text/html; charset=GB2312" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 09/13/2013 06:03 PM, kane wrote:<br>
    </div>
    <blockquote cite="mid:59C78E49-85AE-4AFD-BFCC-6192A19679BD@163.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=GB2312">
      Hi
      <div><br>
      </div>
      <div><span class="Apple-tab-span" style="white-space:pre"> </span>We
        use samba gluster vfs in IO test, but meet with gluster server
        smbd oom&nbsp;killer,&nbsp;&nbsp;</div>
      <div>The smbd process spend over 15g RES with top command show, in
        the end is our simple test code:</div>
      <div><br>
      </div>
      <div>gluster server vfs --&gt; smbd --&gt; client mount dir
        "/mnt/vfs"--&gt; execute vfs test program "$ ./vfs 1000"</div>
      <div><br>
      </div>
      <div>then we can watch&nbsp;gluster server smbd RES with top command.</div>
      <div>
        <div><br>
        </div>
        <div>&nbsp; PID USER &nbsp; &nbsp; &nbsp;PR &nbsp;NI &nbsp;VIRT &nbsp;RES &nbsp;SHR S %CPU %MEM &nbsp; &nbsp;TIME+
          &nbsp;COMMAND &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
        <div>&nbsp;4000 soul &nbsp; &nbsp; &nbsp;20 &nbsp; 0 5486m 4.9g &nbsp;10m R 108.4 31.5
          111:07.07 smbd &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
          &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div>
        <div>&nbsp;3447 root &nbsp; &nbsp; &nbsp;20 &nbsp; 0 1408m &nbsp;44m 2428 S 44.4 &nbsp;0.3
          &nbsp;59:11.55 glusterfsd &nbsp;&nbsp;</div>
      </div>
      <div><br>
      </div>
      <div>io test code:</div>
      <div>=======================================</div>
      <div>
        <div>#define _LARGEFILE64_SOURCE</div>
        <div><br>
        </div>
        <div>#include &lt;stdio.h&gt;</div>
        <div>#include &lt;unistd.h&gt;</div>
        <div>#include &lt;string.h&gt;</div>
        <div>#include &lt;pthread.h&gt;</div>
        <div>#include &lt;stdlib.h&gt;</div>
        <div>#include &lt;fcntl.h&gt;</div>
        <div>#include &lt;sys/types.h&gt;</div>
        <div><br>
        </div>
        <div>int WT = 1;</div>
        <div><br>
        </div>
        <div>#define RND(x) ((x&gt;0)?(genrand() % (x)):0)</div>
        <div>extern unsigned long genrand();</div>
        <div>extern void sgenrand();</div>
        <div><br>
        </div>
        <div>/* Period parameters */ &nbsp;</div>
        <div>#define N 624</div>
        <div>#define M 397</div>
        <div>#define MATRIX_A 0x9908b0df &nbsp; /* constant vector a */</div>
        <div>#define UPPER_MASK 0x80000000 /* most significant w-r bits
          */</div>
        <div>#define LOWER_MASK 0x7fffffff /* least significant r bits
          */</div>
        <div><br>
        </div>
        <div>/* Tempering parameters */ &nbsp;&nbsp;</div>
        <div>#define TEMPERING_MASK_B 0x9d2c5680</div>
        <div>#define TEMPERING_MASK_C 0xefc60000</div>
        <div>#define TEMPERING_SHIFT_U(y) &nbsp;(y &gt;&gt; 11)</div>
        <div>#define TEMPERING_SHIFT_S(y) &nbsp;(y &lt;&lt; 7)</div>
        <div>#define TEMPERING_SHIFT_T(y) &nbsp;(y &lt;&lt; 15)</div>
        <div>#define TEMPERING_SHIFT_L(y) &nbsp;(y &gt;&gt; 18)</div>
        <div><br>
        </div>
        <div>static unsigned long mt[N]; /* the array for the state
          vector &nbsp;*/</div>
        <div>static int mti=N+1; /* mti==N+1 means mt[N] is not
          initialized */</div>
        <div><br>
        </div>
        <div>/* Initializing the array with a seed */</div>
        <div>void</div>
        <div>sgenrand(seed)</div>
        <div>&nbsp; &nbsp; unsigned long seed;<span class="Apple-tab-span"
            style="white-space:pre"> </span></div>
        <div>{</div>
        <div>&nbsp; &nbsp; int i;</div>
        <div><br>
        </div>
        <div>&nbsp; &nbsp; for (i=0;i&lt;N;i++) {</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mt[i] = seed &amp; 0xffff0000;</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;seed = 69069 * seed + 1;</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mt[i] |= (seed &amp; 0xffff0000) &gt;&gt; 16;</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;seed = 69069 * seed + 1;</div>
        <div>&nbsp; &nbsp; }</div>
        <div>&nbsp; &nbsp; mti = N;</div>
        <div>}</div>
        <div><br>
        </div>
        <div>unsigned long&nbsp;</div>
        <div>genrand()</div>
        <div>{</div>
        <div>&nbsp; &nbsp; unsigned long y;</div>
        <div>&nbsp; &nbsp; static unsigned long mag01[2]={0x0, MATRIX_A};</div>
        <div>&nbsp; &nbsp; /* mag01[x] = x * MATRIX_A &nbsp;for x=0,1 */</div>
        <div><br>
        </div>
        <div>&nbsp; &nbsp; if (mti &gt;= N) { /* generate N words at one time */</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; int kk;</div>
        <div><br>
        </div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; if (mti == N+1) &nbsp; /* if sgenrand() has not been
          called, */</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sgenrand(4357); /* a default initial seed is
          used &nbsp; */</div>
        <div><br>
        </div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; for (kk=0;kk&lt;N-M;kk++) {</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; y =
          (mt[kk]&amp;UPPER_MASK)|(mt[kk+1]&amp;LOWER_MASK);</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mt[kk] = mt[kk+M] ^ (y &gt;&gt; 1) ^ mag01[y
          &amp; 0x1];</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; }</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; for (;kk&lt;N-1;kk++) {</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; y =
          (mt[kk]&amp;UPPER_MASK)|(mt[kk+1]&amp;LOWER_MASK);</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mt[kk] = mt[kk+(M-N)] ^ (y &gt;&gt; 1) ^
          mag01[y &amp; 0x1];</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; }</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; y =
          (mt[N-1]&amp;UPPER_MASK)|(mt[0]&amp;LOWER_MASK);</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; mt[N-1] = mt[M-1] ^ (y &gt;&gt; 1) ^ mag01[y &amp;
          0x1];</div>
        <div><br>
        </div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; mti = 0;</div>
        <div>&nbsp; &nbsp; }</div>
        <div>&nbsp;&nbsp;</div>
        <div>&nbsp; &nbsp; y = mt[mti++];</div>
        <div>&nbsp; &nbsp; y ^= TEMPERING_SHIFT_U(y);</div>
        <div>&nbsp; &nbsp; y ^= TEMPERING_SHIFT_S(y) &amp; TEMPERING_MASK_B;</div>
        <div>&nbsp; &nbsp; y ^= TEMPERING_SHIFT_T(y) &amp; TEMPERING_MASK_C;</div>
        <div>&nbsp; &nbsp; y ^= TEMPERING_SHIFT_L(y);</div>
        <div><br>
        </div>
        <div>&nbsp; &nbsp; return y;&nbsp;</div>
        <div>}</div>
        <div><br>
        </div>
        <div>char *initialize_file_source(int size)</div>
        <div>{</div>
        <div>&nbsp; &nbsp;char *new_source;</div>
        <div>&nbsp; &nbsp;int i;</div>
        <div><br>
        </div>
        <div>&nbsp; &nbsp;if ((new_source=(char *)malloc(size))==NULL) /* allocate
          buffer */</div>
        <div>&nbsp; &nbsp; &nbsp; fprintf(stderr,"Error: failed to allocate source file
          of size %d\n",size);</div>
        <div>&nbsp; &nbsp;else</div>
        <div>&nbsp; &nbsp; &nbsp; for (i=0; i&lt;size; i++) /* file buffer with junk */</div>
        <div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;new_source[i]=32+RND(95);</div>
        <div><br>
        </div>
        <div>&nbsp; &nbsp;return(new_source);</div>
        <div>}</div>
        <div><br>
        </div>
        <div>void *tran_file(void *map)</div>
        <div>{</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>int
          block_size = 512;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>char
          *read_buffer; /* temporary space for reading file data into */</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>int
          fd = open((char *)map, O_RDWR | O_CREAT | O_TRUNC, 0644);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>if(fd
          == -1) {</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>perror("open");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>return
          ;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
        <div><br>
        </div>
        <div>//<span class="Apple-tab-span" style="white-space:pre"> </span>read_buffer=(char
          *)malloc(block_size);</div>
        <div>//<span class="Apple-tab-span" style="white-space:pre"> </span>memset(read_buffer,
          0x56, block_size);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>read_buffer
          = initialize_file_source(block_size);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>while(WT){</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>sleep(1);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>pwrite(fd,
          read_buffer, block_size, 0);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>pread(fd,
          read_buffer, block_size, 0);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>free(read_buffer);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>close(fd);</div>
        <div>}</div>
        <div><br>
        </div>
        <div>int main(int argc, char *argv[])</div>
        <div>{</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>if(argc
          == 1) {</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>printf("Set
          file name and file size in GB!\n");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>return
          -1;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
        <div><br>
        </div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>unsigned
          long long length = atoll(argv[1]) * 1024 * 1024 * 1024;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>unsigned
          long long index = 0;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>unsigned
          long long count = 0;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>int
          fd = 0;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>char
          path[32];</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>char
          *swap = NULL;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>int
          psize = 65536;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>int
          ret = 0;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>int
          ret_i = 0;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>void
          *tret;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>pthread_t
          rtid_1;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>pthread_t
          rtid_2;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>pthread_t
          rtid_3;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>pthread_t
          rtid_4;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>int
          fd_i = 0;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>int
          a_size = 256;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>char
          *append_buffer; /* temporary space for reading file data into
          */</div>
        <div><br>
        </div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>swap
          = (char *)malloc(sizeof(char) * psize);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>if(swap
          == NULL) {</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>printf("Malloc
          Swap Failed!\n");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>close(fd);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>return
          -1;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>memset(swap,
          0x55, psize);</div>
        <div><br>
        </div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>append_buffer
          = initialize_file_source(a_size);</div>
        <div><br>
        </div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>pthread_create(&amp;rtid_1,
          NULL, tran_file, "/mnt/vfs/a.map");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>pthread_create(&amp;rtid_2,
          NULL, tran_file, "/mnt/vfs/b.map");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>pthread_create(&amp;rtid_3,
          NULL, tran_file, "/mnt/vfs/c.map");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>pthread_create(&amp;rtid_4,
          NULL, tran_file, "/mnt/vfs/d.map");</div>
        <div><br>
        </div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>while(index
          &lt; length)</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>if((index
          % (1024*1024*1024)) == 0) {</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>count++;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>sprintf(path,
          "/mnt/vfs/data/%08lld.dat", count);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>if((fd
          = open(path, O_RDWR | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR))
          &lt; 0)</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>printf("Can
          not open io file: %s\n", path);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>perror("open");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>return
          -1;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>sprintf(path,
          "/mnt/vfs/data/%08lld.index", count);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>if((fd_i
          = open(path, O_RDWR | O_CREAT | O_APPEND, S_IRUSR | S_IWUSR))
          &lt; 0)</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>printf("Can
          not open io file: %s\n", path);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>perror("open");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>return
          -1;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>printf("...1GiB\n");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
        <div><br>
        </div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>ret
          = pwrite(fd, swap, psize, (index % (1024*1024*1024)));</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>if(ret
          != psize) {</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>perror("write");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>printf("Write
          data file failed!\n");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>continue;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>lseek64(fd_i,
          ((index*a_size)/65536), SEEK_SET);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>ret_i
          = write(fd_i, append_buffer, a_size);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>if(ret_i
          != a_size) {</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>perror("write");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>printf("Write
          index file failed!\n");</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>continue;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
        <div><br>
        </div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>index
          += ret;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>if((index
          % (1024*1024*1024)) == 0) {</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>close(fd);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>close(fd_i);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div>
        <div><br>
        </div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>WT
          = 0;</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>pthread_join(rtid_1,
          &amp;tret);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>pthread_join(rtid_2,
          &amp;tret);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>pthread_join(rtid_3,
          &amp;tret);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>pthread_join(rtid_4,
          &amp;tret);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>printf("%s
          GB write\n", argv[1]);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>sync();</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>free(swap);</div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>free(append_buffer);</div>
        <div><br>
        </div>
        <div><span class="Apple-tab-span" style="white-space:pre"> </span>return
          0;</div>
        <div>}</div>
      </div>
      <div><br>
      </div>
      <div>=======================================</div>
      <div><br>
      </div>
      <div><br>
      </div>
      <div><br>
      </div>
      <div>
        <div apple-content-edited="true">
          <div class="" style="color: rgb(0, 0, 0); font-family:
            Helvetica; font-size: medium; font-style: normal;
            font-variant: normal; font-weight: normal; letter-spacing:
            normal; line-height: normal; orphans: 2; text-align:
            -webkit-auto; text-indent: 0px; text-transform: none;
            white-space: normal; widows: 2; word-spacing: 0px;
            -webkit-text-size-adjust: auto; -webkit-text-stroke-width:
            0px; word-wrap: break-word; -webkit-nbsp-mode: space;
            -webkit-line-break: after-white-space; "><br>
          </div>
          <div class="" style="color: rgb(0, 0, 0); font-family:
            Helvetica; font-size: medium; font-style: normal;
            font-variant: normal; font-weight: normal; letter-spacing:
            normal; line-height: normal; orphans: 2; text-align:
            -webkit-auto; text-indent: 0px; text-transform: none;
            white-space: normal; widows: 2; word-spacing: 0px;
            -webkit-text-size-adjust: auto; -webkit-text-stroke-width:
            0px; word-wrap: break-word; -webkit-nbsp-mode: space;
            -webkit-line-break: after-white-space; ">kane&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
          <div class="" style="color: rgb(0, 0, 0); font-family:
            Helvetica; font-size: medium; font-style: normal;
            font-variant: normal; font-weight: normal; letter-spacing:
            normal; line-height: normal; orphans: 2; text-align:
            -webkit-auto; text-indent: 0px; text-transform: none;
            white-space: normal; widows: 2; word-spacing: 0px;
            -webkit-text-size-adjust: auto; -webkit-text-stroke-width:
            0px; word-wrap: break-word; -webkit-nbsp-mode: space;
            -webkit-line-break: after-white-space; ">----------------------------------------------------------------</div>
          <div class="" style="color: rgb(0, 0, 0); font-family:
            Helvetica; font-size: medium; font-style: normal;
            font-variant: normal; font-weight: normal; letter-spacing:
            normal; line-height: normal; orphans: 2; text-align:
            -webkit-auto; text-indent: 0px; text-transform: none;
            white-space: normal; widows: 2; word-spacing: 0px;
            -webkit-text-size-adjust: auto; -webkit-text-stroke-width:
            0px; word-wrap: break-word; -webkit-nbsp-mode: space;
            -webkit-line-break: after-white-space; ">Email: &nbsp;<a
              moz-do-not-send="true" href="mailto:kai.zhou@soulinfo.com">kai.zhou@soulinfo.com</a><br
              class="">
            µç»°: &nbsp; &nbsp;0510-85385788-616</div>
          <span style="color: rgb(0, 0, 0); font-family: Helvetica;
            font-size: medium; font-style: normal; font-variant: normal;
            font-weight: normal; letter-spacing: normal; line-height:
            normal; orphans: 2; text-align: -webkit-auto; text-indent:
            0px; text-transform: none; white-space: normal; widows: 2;
            word-spacing: 0px; -webkit-text-size-adjust: auto;
            -webkit-text-stroke-width: 0px; "><br>
          </span></div>
        <br>
      </div>
    </blockquote>
    Thanks for the code. I will try to reproduce the issue using your
    code.<br>
    <br>
    -Lala<br>
  </body>
</html>