BPI-M3 using SSD on SATA-Port

Hi Tom,

Take the latest Ubuntu Mate for the M3, then try to follow this information to get the Mate on the onboard eMMC storage.

Please report back if you can now boot without SDcard into Ubuntu Mate 15.10 for BPI-M3 GPU PowerVR SGX544MP (20160317)

Steps seem to be weird, just read carefully: Step 0: copy the Ubuntu Mate 15.10 BPI-M3 image on an USB-MemoryStick. Step 1: Start up the M3 (SBC) with the SD card, on which you have flashed the Ubuntu Mate for BPI-M3 image too. Step 2: Put the USB-MemoryStick which contains the image you’d like to burn to the eMMC Storage to the USB port of the M3. Step 3: Run “fdisk -l” command line on your BPI-M3 and you can see the eMMC path as “/dev/mmcblk1”

sudo fdisk -l

Step 4: Switch to the path of image, and run the command.

cd /dev/sdx
sudo dd if=xxxubuntu-mate-m3-sd-emmc-2016xxxx.img of=/dev/mmcblk1 bs=1M && sync

Step 5: After entering your password, you will not see changes to the terminal until it is finished - wait. Step 6: shutdown -h now Step 7: Now you can safely remove the SD card, and restart the BPI-M3. Step 8: Check if the M3 starts normally from the eMMC storage. Look at the filesystem with:

lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL
df -h

(Please re-run the test with bonnie++)

@noralee @sinovoip Will you please update your gitbook with the more precise guide above ? Thank you

2 Likes

He answered your question with his link before and did already what you suggested (just look into http://pastebin.com/fVKfqFpQ – everything is absolutely obvious). And bonnie++ is still not a tool you should use if you’re interested in detailed disk performance.

Hi Tido, I brought the image to on-board eMMC. Here now all the results with iozone: iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2

from Dragan:
                                                          random    random
          kB  reclen    write  rewrite    read    reread    read     write
      102400       4     4378     2626     5659     7929     8329     5106
      102400      16    13302    13674    27495    27399    26636    13430
      102400     512    22770    23383    54337    54592    52669    23046
      102400    1024    23582    23381    60522    61165    61159    23364
      102400   16384    24577    25005    72832    72809    72435    25216
=============================================================================

from tomde:
    Run began: Wed Mar 30 17:32:47 2016

    Include fsync in write timing
    O_DIRECT feature enabled
    Auto Mode
    File size set to 102400 kB
    Record Size 4 kB
    Record Size 16 kB
    Record Size 512 kB
    Record Size 1024 kB
    Record Size 16384 kB
    Command line used: iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2
    Output is in kBytes/sec
    Time Resolution = 0.000001 seconds.
    Processor cache size set to 1024 kBytes.
    Processor cache line size set to 32 bytes.
    File stride size set to 17 * record size.
------

with bootloader and /root on sd-card (32GByte UHS Class 1)

                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4      212      242     6193     6172     5080      245
          102400      16     2873     2865    10752    10753     9382     1233
          102400     512     2991     4028    20222    20226    20127     2482
          102400    1024     3473     3337    20777    20806    20711     2791
          102400   16384     4185     4468    21873    21874    21869     4464

------------------------------------------------------------------------------

with bootloader on /dev/mmcbk0p1 and SSD 128GByte on USB2.0 as /dec/sdb1

                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     6355     6360     8101     8078     7080     6364
          102400      16    18007    17997    18276    18284    17521    18099
          102400     512    30451    30857    32949    33121    29571    30763
          102400    1024    31181    31144    33396    33451    33076    31401
          102400   16384    34168    34442    34968    34976    34751    34326

------------------------------------------------------------------------------

with bootloader and /root on onboard emmc

                                                              random    random
              kB  reclen    write  rewrite    read    reread    read     write
          102400       4     4437     6173    15256    15228    13091     4424
          102400      16     7949     5820    34066    34029    30940     3998
          102400     512     5583     4579    56389    56353    56251     3157
          102400    1024    28136    34164    62479    62583    62468    23143
          102400   16384    11280    34688    74056    73980    74003    32260

The worst results are obtained with an SD card. The on-board eMMC provides for the read mode about 2 times faster compared to a SSD disk on USB2.0 port. In write mode, they differ slightly. With regard to higher-capacity SSD disk on USB2.0 port is a good alternative. It is apparent from the measurements that the limit values for the USB2.0 port at a flow rate of about 35 MBytes/s.

Thx for the comprehensive answer! :slight_smile:

Regarding SD cards it really depends on the card in question. While they can’t exceed the ‘usual’ ~22 MB/s limitation regarding sequential transfer speeds there are huge differences regarding random I/O performance. Have a look at this thread here to see how even cheap SD cards with good controllers and high capacity are able to perform: http://forum.pine64.org/showthread.php?tid=469&page=2

You should also be aware that most of the times random I/O is more important than sequential transfer speeds (unless you record or stream video and stuff like that) so I would always have a look at these numbers first.

What puzzles me is the difference regarding random write speeds with small record sizes on your eMMC. It seems you have a different eMMC than me. Can you please compare these values with yours:

                 cid: 1501004d384731474303dc0db061506f 
                 csd: d02701320f5903fff6dbffef8e40400d 
                 rev: 6 
                date: 05/1997 
                name: M8G1GC 
                type: MMC 
preferred_erase_size: 524288 
          cache_ctrl: 0 
          cache_size: 65536 
               fwrev: 0x0 
               hwrev: 0x0 
               oemid: 0x0100 
enhanced_area_offset: 18446744073709551594 
              manfid: 0x000015 
              serial: 0xdc0db061 
          erase_size: 524288 
  enhanced_area_size: 4294967274 

sysfs entry, can’t remember the correct one but you find it quickly using

find /sys -name oemid