Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 14 May 2012 21:23:11 +0200
From:      =?ISO-8859-1?Q?Fredrik_Sik=E9n?= <fredrik.siken@gmail.com>
To:        freebsd-arm@freebsd.org
Subject:   13x longer execution times before remount
Message-ID:  <CAGh%2B35MFtuDFjMkkHV%2B=X4g4uWmkG0AyJxdutFMwxfve-pUwqg@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi,

I've an 8.2-Release running on an ARM with poor execution performance
before a remount is performed.

The scenario is as follows

0) I mount an UFS SSD disk
# mount -o noclusterr -o noclusterw /dev/ad0s1 /mnt/

1) I copy an executable to an UFS mounted SSD disk and measure its
time of execution from start to stop

2) I remount the system (umount/mount)

3) I perform the same steps as in 1) but now with a performance increase of 13x

Other tests performed:
- Tested on a UFS USB stick with the same behaviour
- Tested to write to an NFS mounted disk and this gives the expected
behaviour - the same time before and after a remount.
- Running the same version on a x86 gives the expected behaviour - the
same time before and after a remount.

Results after file is copied but before a remount
# time ./test 10000 1000000
size = 10000, no = 1000000
133.000u 0.000s 2:13.53 99.8%   3282+18575k 0+0io 0pf+0w

Results after a remount
# time ./test 10000 1000000
size = 10000, no = 1000000
7.000u 0.000s 0:07.82 99.8%     3286+18595k 0+0io 0pf+0w

The test application source looks like this
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char **argv) {

  int size = atoi(argv[1]);
  int no = atoi(argv[2]);
  printf("size = %d, no = %d\n", size, no);

  {
    int i;

    for(i = 0 ; i<no ; i++) {
      char *p = malloc(size);
      memset(p, 0, size);
      free(p);
    }
  }
}

Thanks,
Fredrik



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGh%2B35MFtuDFjMkkHV%2B=X4g4uWmkG0AyJxdutFMwxfve-pUwqg>