DerivedData, npm, pip, Cargo e Gradle em um disco RAM

DerivedData, npm, pip, Cargo e Gradle em um disco RAM

Uma build grava milhares de arquivos pequenos que ninguém vai precisar no dia seguinte: DerivedData, target, build, caches de pacotes. Em um disco RAM todo esse vaivém acontece na memória: builds e acessos ao cache ficam mais rápidos e o SSD é poupado. Veja quais pastas vale a pena mover, a configuração exata de cada ferramenta e como manter tudo funcionando depois de reiniciar.

Em resumo
  • Mover: DerivedData do Xcode, caches do npm, pip, Cargo e Gradle, pastas de build, TEMP.
  • Nunca só na RAM: código-fonte, repositórios, Archives do Xcode, tudo que você não salvou ou não deu commit.
  • Manter entre reinicializações: caches de pacotes sim, DerivedData e pastas de build se você quiser.
  • Tamanho: 2 GB para um cache de pacotes, 8 GB para vários caches ou para o DerivedData.

O que mover e o que deixar quieto

Um disco RAM perde os arquivos quando é ejetado ou quando o computador desliga, a não ser que eles sejam salvos em outro lugar. Por isso ele serve para pastas que a ferramenta consegue gerar ou baixar de novo sozinha.

Bom no disco RAM
  • DerivedData do Xcode: produtos de compilação e índices
  • caches do npm, Yarn, pip, Cargo, Gradle, Maven
  • saída de build: target, build, obj
  • TEMP no Windows, TMPDIR no Mac
Deixar no SSD
  • código-fonte e repositórios Git
  • Archives do Xcode das versões que você publicou
  • configurações e credenciais: ~/.npmrc, gradle.properties
  • tudo que existe em uma única cópia

Do jeito manual, ferramenta por ferramenta

Primeiro crie um disco RAM (no Mac, no Windows) e depois aponte cada ferramenta para uma pasta nele. Todas as configurações abaixo vêm da documentação oficial das ferramentas.

Ferramenta Pasta padrão Como mover
DerivedData do Xcode ~/Library/Developer/Xcode/DerivedData Xcode > Settings > Locations > Derived Data: Custom. Em scripts: xcodebuild -derivedDataPath <caminho>
cache do npm ~/.npm, Windows: %LocalAppData%\npm-cache npm config set cache <caminho>
cache do pip ~/.cache/pip, Mac: ~/Library/Caches/pip, Windows: %LocalAppData%\pip\Cache PIP_CACHE_DIR=<caminho> ou --cache-dir
build do Cargo target em cada projeto CARGO_TARGET_DIR=<caminho> ou build.target-dir em .cargo/config.toml
Gradle ~/.gradle GRADLE_USER_HOME=<caminho>

No macOS ou no Linux fica assim (aqui o disco está montado em /Volumes/RAMDisk):

npm config set cache /Volumes/RAMDisk/npm
export PIP_CACHE_DIR=/Volumes/RAMDisk/pip
export CARGO_TARGET_DIR=/Volumes/RAMDisk/cargo-target

Xcode, só no macOS (depois reinicie o Xcode):

defaults write com.apple.dt.Xcode IDECustomDerivedDataLocation /Volumes/RAMDisk/DerivedData
Cuidado com os efeitos colaterais. GRADLE_USER_HOME também leva junto o gradle.properties, os scripts de inicialização e as distribuições do Wrapper, e no CARGO_HOME ficam as ferramentas instaladas e as credenciais. Nesses casos, mova só as pastas de cache (~/.gradle/caches, ~/.cargo/registry) com um link simbólico (ln -s, no Windows mklink /J). E lembre: depois de reiniciar, o disco RAM não existe mais, e as configurações e links apontam para o nada até você criá-lo de novo.

Com o Exlade RamDisk: modelos

O Exlade RamDisk é um disco RAM gratuito para Windows, macOS e Linux. Os modelos dele fazem esses passos por você e desfazem tudo quando o disco é ejetado.

Escolha um modelo

Developer (8 GB, Windows e Linux) move os caches do npm, Yarn, pip, Cargo, Gradle, Maven, Go e NuGet. npm (2 GB) existe nos três sistemas, e Xcode (8 GB, macOS) fica com o DerivedData. Pastas de ferramentas que você não tem são ignoradas.

Criação de um disco RAM no Exlade RamDisk para Windows: modelos Browsers, Developer, npm e Temp, nome e tamanho
Adicione a pasta de build

Em “Pastas neste disco”, clique em “Adicionar pasta…” e escolha o target, build ou obj de um projeto. Ative “Criar ao iniciar o Windows” e, para caches de pacotes, “Manter arquivos”.

Opções do novo disco no Exlade RamDisk para Windows: criar ao iniciar o Windows, manter arquivos, adicionar a pasta de build
Continue com os mesmos caminhos

No Windows e no Linux, no lugar da pasta fica um link para o disco (no Windows, uma junction, sem direitos de administrador), e as ferramentas veem os caminhos de sempre. No Mac, o modelo Xcode muda o local do Derived Data nas configurações do Xcode (reinicie o Xcode), e o modelo npm define cache no ~/.npmrc. Quando o disco é ejetado, tudo volta ao que era.

Não dá para mover uma pasta com arquivos abertos: feche antes o Xcode, a IDE ou o daemon do Gradle. Mais detalhes em Mover pastas.

Manter os arquivos depois de reiniciar?

Pasta Manter? Por quê
caches do npm, pip, Cargo, Gradle sim senão os pacotes são baixados de novo a cada reinicialização
DerivedData do Xcode opcional ele se enche de novo na primeira build
pastas de build opcional a primeira build depois de reiniciar será completa
TEMP, TMPDIR não são arquivos temporários

Por isso o modelo Developer no Windows mantém os arquivos e o Xcode não. Um disco ao iniciar com “Manter arquivos” os salva periodicamente e antes de desligar; se a energia cair de repente, só se perde o que mudou desde o último salvamento.

Quanta memória dar

Comece pelo tamanho do modelo. No Windows, no Linux e no macOS 26, um disco ocupa memória conforme os arquivos são gravados, não o tamanho inteiro de uma vez. No macOS 15 o tamanho todo é reservado assim que o disco é criado, então o modelo Xcode de 8 GB já ocupa 8 GB de RAM: ali, escolha um tamanho que o seu Mac possa ceder. Dá para mudar o tamanho depois: no Mac e no Linux os arquivos ficam, no Windows só discos NTFS mudam de tamanho no lugar (por isso os modelos Developer e npm usam NTFS), e um disco exFAT ou FAT32 precisa ser criado de novo. Depois de um dia de trabalho, o “Histórico de uso” mostra quanto cada disco realmente precisou. Em um computador com 8 GB de memória, um disco RAM logo começa a tirar memória da IDE e dos compiladores. Saiba mais: vale a pena ter um disco RAM? e Memória e histórico.

Servidores de build e CI

O utilitário eramdisk tem os mesmos comandos no Windows, no macOS e no Linux, com saída em JSON para scripts. Em um servidor Linux você pode instalar só o serviço e o utilitário, sem interface gráfica.

eramdisk create -t Developer                    # caches de pacotes (Windows, Linux)
eramdisk create -s 4G -n Build --startup        # disco criado a cada inicialização
eramdisk redirect add Build ~/src/app/target    # mover uma pasta de build para ele
eramdisk list --json                            # discos e quanto ocupam

Perguntas frequentes

O Xcode percebe que o DerivedData mudou de lugar?

Sim, depois que você reinicia o Xcode: o modelo Xcode muda o mesmo local do Derived Data que você definiria em Xcode > Settings > Locations. Quando o disco é ejetado, a configuração anterior volta.

Posso deixar o código-fonte em um disco RAM?

Melhor não. Se o disco sumir antes de os arquivos serem salvos, o trabalho sem commit se perde. Mantenha o código no SSD e coloque no disco RAM só o que dá para compilar ou baixar de novo.

Baixe o Exlade RamDisk grátis

Windows 10 e 11, macOS 15 e posterior, Ubuntu, Debian e Fedora. Sem cadastro e sem período de avaliação.

Baixar grátis Recursos