4 ms·
Rather than re-write your scripts to store temp files into /dev/shm, you can just mount /tmp using the tmpfs file system and get the same benefit for all your p
by hackyhacky 1y ago
Rather than re-write your scripts to store temp files into /dev/shm, you can just mount /tmp using the tmpfs file system and get the same benefit for all your programs. Some distros do this by default.
The relevant line from fstab is:
tmpfs /tmp tmpfs noatime 0 2
Now any program that writes to /tmp will be writing to a RAM disk, thus sparing unnecessary wear on my SSD.
- frollogaston 1y agoIf I already have /tmp and it's not tmpfs, honestly I'm not gonna bother remapping it.
- hiAndrewQuinn 1y agoI do mention this offhand in the article: "The existence of /dev/shm is a boon for me mostly because it means I never have to worry about whether /tmp is really RAM-based again."
- quotemstr 1y agoNow you have to worry about whether you can access /dev/shm. Please encourage people to use supported interfaces instead of random voodoo (anything under /dev that wasn't there in 1995) for day-to-day tasks.
- hiAndrewQuinn 1y ago/dev/shm is typically world-writable by default: $ ls -ld /dev/shm drwxrwxrwt 3 root root 120 Jun 32 02:47 /dev/shm/ Incidentally, "30 years ago" is the cutoff date for music being considered the oldies. This just made me realize Nevermind is now an oldie, and soon The Lonesome Crowded West will be too.
- quotemstr 1y ago> /dev/shm is typically world-writable by default: You are relying on random implementation details instead of universal APIs that work across OSes and environments. Please stop. So help me God, if I make a Linux system, I will make it _not_ have a /dev/shm just to avoid people relying on non-standard stuff for no good reason. Honestly, it's because of stuff like this that we need Docker.
- deleted 1y ago[deleted]
- half-kh-hacker 1y agofile-hierarchy(7) states /dev/shm is tmpfs and that "all users have write access to this directory", so I think you'd have to be making a non-systemd distro
- hackyhacky 1y agoIt also says: > Usually, it is a better idea to use memory mapped files in /run/ (for system programs) or $XDG_RUNTIME_DIR (for user programs) instead of POSIX shared memory segments, since these directories are not world-writable and hence not vulnerable to security-sensitive name clashes. $XDG_RUNTIME_DIR usually points to /run/user/${uid}, so you're guaranteed that other users won't write there, and possibly won't even be able to read there.
- frollogaston 1y ago/tmp isn't a standard place for RAM disk either, all it says is: https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s18.html https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s18.htm... I'm not really seeing a right or wrong here anyway unless you're distributing a script that's meant to run on all sorts of Linux systems. In which case you probably aren't concerned with the physical storage medium being used.
- quotemstr 1y ago/tmp is literally POSIX: https://pubs.opengroup.org/onlinepubs/9799919799/ https://pubs.opengroup.org/onlinepubs/9799919799/ It doesn't get more standard than that. It's because of people doing random nonstandard shit that we need to Docker-ize a lot of software these days. People refuse to lift a single finger to adhere to conventions that let programs co-exist without simulating a whole god damn computational universe for each damn program.
- chaps 1y agoA past role in a past life had me installing security services on servers. One server had incredibly awkward permission sets across its common directories so our deployment script failed. The fix? Just throw it into /dev/shm and install it directly from there. It worked great.
- throwaway992673 1y ago"And it's been a long time, which agrees with this watch of mine"
- wredcoll 1y agoThis is a ridiculous comment but it did make me curious, when did /dev/shm become a common thing? My current understanding is kernel 2.6, i.e. 2004.
- esseph 1y ago2.4 in 2001 is when it was released with kernel support
- frollogaston 1y ago"virtually every Unix system already has it mounted as a tmpfs by default" might be true if you say Linux instead, but Mac doesn't have /dev/shm
- loeg 1y agoI may misremember, but I think it's also common in the BSDs? (Whereas /var/tmp is persisted.)
- frollogaston 1y agoYeah, Mac is probably the odd one out, but it's also maybe the most common Unix-based/Unix-like desktop OS. Anyway, both are POSIX, unlike Linux.
- hiAndrewQuinn 1y agoMea culpa, you're right. I should not have assumed that just because POSIX was mentioned in the orbit of this thing that everyone else had this too. The article has been corrected.
- AdieuToLogic 1y agoOS-X/macOS supports RAM drives and a script which defines one for use as /private/tmp (which /tmp is symbolically linked to) is: #!/bin/bash ramfs_size_mb=1024 mount_point=/private/tmp counter=0 ramfs_size_sectors=$((${ramfs_size_mb}*2048)) ramdisk_dev=`hdiutil attach -nomount ram://${ramfs_size_sectors}` while [[ ! -d "/Volumes" ]] do sleep 1 counter=$((counter + 1)) if [[ $counter -gt 10 ]] then echo "$O: /Volumes never created" exit 1 fi done diskutil eraseVolume HFS+ 'RAM Disk' ${ramdisk_dev} || { echo "$O: unable to create RAM Disk on: ${ramdisk_dev}" exit 2 } umount '/Volumes/RAM Disk' mkdir -p ${mount_point} 2>/dev/null mount -o noatime -t hfs ${ramdisk_dev} ${mount_point} || { echo "$0: unable to mount ${ramdisk_dev} ${mount_point}" exit 3 } chown root:wheel ${mount_point} chmod 1777 ${mount_point} Adding a plist definition to /Library/LaunchDaemons can ensure the above is executed when the system starts.
- chrisdeso 1y agoThis is the first linux "thing" I've understood after a first read on hacker news. Love you all and will give this a whirl.
- pkulak 1y agoI did this for a while, but writing files to ram can be dangerous, since most things assume unlimited disk space. I noticed that updates would fail on machines that had 16 gigs of ram unless I logged out of my window manager and did it from the TTY. Took quite a long time to realize it was because of all the compiles writing to /tmp. Much easier to just let the SSD get used.
- buckle8017 1y agoThis is why having swap even when you have plenty of memory for normal usage is good. Swap on an SSD isn't even that slow.
- pkulak 1y agoYou know what, your comment actually reminds me that this happened when I also had a bug in my configuration that was causing me to not actually use swap. I assume running out of tmpfs uses swap like anything else? I might give tmpfs another try.
- AdieuToLogic 1y ago> I assume running out of tmpfs uses swap like anything else? This is not the case. RAM-based file system capacities are unrelated to process memory usage, of which "swap space" is for the latter.
- pkulak 1y agoInteresting, thank you. I stand by my original point, downvotes be damned.
- AdieuToLogic 1y ago> Interesting, thank you. Glad to help out. Here[0] is more information regarding Linux swap space as it relates to processes and the VMM subsystem. > I stand by my original point, downvotes be damned. :-D 0 - https://phoenixnap.com/kb/swap-space https://phoenixnap.com/kb/swap-space
- b112 1y agoA decade ago yes, but these days, SSD wear isn't an issue for desktop users.
- pm2222 1y agoSystemd clears /tmp from time to time. Just saying.
- godelski 1y agoAnother thing you can do is use systemd and use the privatetmp option. You really should be doing this on all your services