What is the difference in speed between eMMC and SDcard?


I bought a Jetson TX2. I work on stereo vision. The packages I use for this are very large in size such as opencv and ros. So 32 GB eMMC is not enough for me. So I want to install it on SDcard.

  • How much difference between eMMC and SDcard in terms of speed? (my SDcard 100 mb / s)

  • How can I install on SDcard, can you suggest resources?

Thanks in advance.

Just my own experience is that SD card is slower than eMMC. However, it may be reasonable to put some content on the SD card.

Most of the development software gets put on “/usr/local/” (or sometimes “/home”), and thus if you were to move that content onto an SD card partition, and then mount the SD card there, this would save a lot of space. Running everything on SD card tends to get complicated.

Just as a general tip, if you choose to use the SD card somewhere like “/usr/local”, then you will want to allow mount failure. If you simply say that the SD card is to be mounted there, and the card fails or is not inserted, then without tolerating mount failure the system will block and fail to boot. I’ll explain that later, but it is important.

If you have an SD card, and if it shows up on your system as “/dev/mmcblk1” (or “/dev/sdb”…adjust for your case since this will change depending on how/where it is used), then you could create a partition on this of type ext4 (which would end up as something like “/dev/mmcblk1p1”, and then you would format it as type ext4…be very careful to not format the wrong partition). Example ways to to partition and format would be through gdisk and mkfs.ext4, or perhaps gparted.

You could then copy content from “/usr/local/" to that partition (you’d find a temporary mount point during the copy). You would not want to destroy the eMMC version of "/usr/local/” until you know the SD card is working.

While the SD card is plugged in to the host PC or the Jetson you can find the UUID via:

lsblk -f

(all devices and partitions will be listed, you’ll be interested in only the partition you added ext4 formatting to)

Then you’d create a mount configuration where failure is allowed. Just as an example, if the UUID were “1234-5678-abcd” (adjust for your UUID), then you could append this at the end of the “/etc/fstab”:

UUID=1234-5678-abcd  /usr/local  ext4  rw,suid,dev,exec,auto,nouser,async,<b>nofail</b>  1 2

This would automatically mount the ext4 partition with UUID “1234-5678-abcd” on “/usr/local/” if it is available, but continue to boot if the SD card is not available. The “,nofail” is very important since this is removable media. The " 1 2" at the end means that if you use backup and restore software the SD card would be seen as a device to back up, but would only be backed up after finishing the eMMC backup (many people don’t use backup and restore software on a Jetson, but it doesn’t hurt to have it listed).

There are a number of ways to copy the current “/usr/local/*” content to the SD card. You can test the SD card partition mount before spending the time to copy content over, and if this works for you, then you could spend the time moving data over to the SD card.