Como uma arquitetura NUMA fornece uma única imagem do sistema, ela pode executar um sistema operacional sem otimizações especiais.

A alta latência de acessos à memória remota pode deixar os processadores subutilizados, aguardando constantemente a transferência de dados para o nó local, e a conexão NUMA pode se tornar um gargalo para aplicativos com demandas de alta largura de banda de memória.

Além disso, o desempenho em tal sistema pode ser altamente variável. Isso varia, por exemplo, se um aplicativo tem memória localizada localmente em uma execução de avaliação de desempenho, mas uma execução subsequente coloca toda essa memória em um nó remoto. Esse fenômeno pode dificultar o planejamento da capacidade.

Alguns sistemas UNIX de ponta oferecem suporte para otimizações de NUMA em seus compiladores e bibliotecas de programação. Esse suporte requer que os desenvolvedores de software ajustem e recompilem seus programas para obter o desempenho ideal. Não é garantido que as otimizações de um sistema funcionem bem na próxima geração do mesmo sistema. Outros sistemas permitiram que um administrador decidisse explicitamente sobre o nó no qual um aplicativo deve ser executado. Embora isso possa ser aceitável para certos aplicativos que exigem que 100% de sua memória seja local, ele cria uma carga administrativa e pode levar a um desequilíbrio entre os nós quando as cargas de trabalho mudam.

Idealmente, o software do sistema fornece suporte NUMA transparente, para que os aplicativos possam se beneficiar imediatamente sem modificações. O sistema deve maximizar o uso da memória local e agendar programas de forma inteligente, sem exigir a intervenção constante do administrador. Finalmente, deve responder bem às mudanças de condições sem comprometer a equidade ou o desempenho.