Utilisation de Visual Studio Code

Visual Studio Code (VS Code) est un environnement de développement intégré développé par Microsoft pour Windows, Linux, macOS et les navigateurs web. Veuillez trouver ci-dessous quelques recommandations d’utilisation dans l’écosystème du CC-IN2P3.

Note

Ceci s’applique également aux dérivés/alternatives de VSCode/VSCodium, notamment Antigravity, Cursor, Positron, Zed, etc.

  1. Associez votre session de VS Code au même serveur interactif (et pas à l’alias cca) :

    • connectez-vous aux serveurs interactifs à l’aide d’un client SSH (pas VS Code, mais PuTTY, OpenSSH, etc.),

    • récupérez le nom d’hôte du serveur auquel vous vous êtes connecté :

      % hostname
      cca042
      
    • connectez-vous via la fonctionnalité Remote SSH de votre VS Code sur ce serveur (en suivant l’exemple précédent, sur cca042.in2p3.fr au lieu de cca.in2p3.fr) ;

    • attendez que VS Code ait terminé son initialisation, en particulier si vous n’avez pas suivi les recommandations de dépannage ci-dessous concernant le répertoire de travail.

  2. Évitez de lancer une session interactive depuis un terminal VS Code. Votre srun risquerait, en cas de déconnexion de VS Code, de persister sur la plateforme de calcul, occupant de la ressource inutilisable. Privilégiez un client SSH (PuTTY, OpenSSH, etc.).

Dépannage

Répertoire de travail

Lorsque VS Code démarre, il lance la commande git status -z -uall dans son répertoire de travail. Cette commande n’est pas optimisée pour un répertoire contenant beaucoup de fichiers et/ou des fichiers de taille importante : veuillez lancer VS Code à partir d’un répertoire contenant un faible nombre de fichiers.

En règle générale, veuillez privilégier un sous-répertoire de votre répertoire personnel (HOME) plutôt qu’un de votre répertoire GROUP.

Serveur Jupyter Notebook

VS Code permet de lancer un serveur Notebook Jupyter intégré. Si le serveur Jupyter intégré est lancé lors d’une connexion à un serveur interactif cca, son utilisation peut provoquer le dépassement des limites acceptés et son exécution sera interrompue.

Pour exécuter vos notebooks Jupyter, nous vous conseillons de privilégier l’utilisation de la Plateforme de Notebooks Jupyter proposée par le CC-IN2P3.

Perte de connexion

Si la connexion internet de votre poste de travail peut être interrompue par la mise en veille de votre écran (cas des utilisateurs Mac avec une connexion Thunderbolt, c’est-à-dire une connexion au réseau Ethernet filaire dans l’écran), vos fenêtres VS Code seront fermées par le manque de connexion. Voici, pour info, la description de ce qu’il se passe :

  • VS Code crée une connexion SSH vers un serveur cca et lance (sur cet interactif) Node.js ;

  • l’utilisateur interrompt temporairement de son activité ;

  • le poste de travail détecte le manque d’activité et met l’écran en veille: la connexion réseau est coupée et

    • la connexion SSH disparaît ;

    • mais le Node.js de VS Code persiste ;

    • le VS Code fantôme est détecté par le monitoring des interactifs (et tué).

Optimiser la performance

Pour résoudre certains problèmes de performance avec VScode depuis un serveur interactif, vous pouvez ajouter les lignes ci-dessous dans votre fichier de configuration ~/.vscode-server/data/Machine/settings.json.

{
   "files.watcherExclude": {
      "**/.git/objects/**": true,
      "**/.git/subtree-cache/**": true,
      "**/node_modules/*/**": true,
      "**/.cache/**": true,
      "**/.conda/**": true,
      "**/.local/**": true,
      "**/.nextflow/**": true
   }
}

Bien évidemment, vous pouvez modifier ou ajouter des répertoires à la liste.

Sur-exploitation des ressources

Par défaut, lors de son démarrage, VS Code recherche les noms des symboles du code source pour ses fonctions d’auto-complétion. Pour cela, il utilise ripgrep qui utilise tous les cœurs de la machine pour faire un scan rapide.

Attention

Il est recommandé, si possible, de désactiver cette collecte avec ripgrep (ou de la configurer pour être moins agressive) pour éviter la charge trop importante sur le serveur interactif.

Pour désactiver ripgrep, ajoutez la ligne suivante au fichier de configuration de VS Code :

"search.useRipgrep": false
  • Localisation du fichier de configuration en ce qui concerne VS Code (le nommage du répertoire Code peux changer selon le logiciel alternatif utilisé) :

    • sur Linux : $HOME/.config/Code/User/settings.json

    • sur macOS : $HOME/Library/Application\ Support/Code/User/settings.json