Blog Haypo

Aller au contenu | Aller au menu | Aller à la recherche

mercredi 21 septembre 2011

Nouvel ordinateur, KVM et le système de fichier btrfs

Je me suis acheté un nouvel ordinateur pour développer et pour lancer plusieurs machines virtuelles en même temps :

  • CPU : Intel i7-2600, 64 bits, 8 coeurs (4 coeurs avec hyper threading) à 3.4 GHz
  • RAM : Kingston 12 Go à 1066 MHz
  • Carte mère ASUS P8P67LE
  • 2 disques Western Digital, "Caviar blue", de 1 To en SATA
  • GPU : Radeon HD 5500
  • Boîtier Antec Sonata IV

J'ai tenté de configurer les deux disques en RAID 0 avec le RAID matériel, mais j'ai appris que le chipset Intel P67 ne fait que du RAID logiciel. Il y a un chipset SATA supplémentaire (Marvell), mais je n'ai pas essayé de m'en servir. L'installeur de Fedora 15 m'a permis simplement de créer un RAID 0 logiciel. Puisque j'aime vivre dangereusement, j'ai choisi de créer une seule partition de 2 To dans le système de fichier btrfs (encore qualifié d'expérimental). Au passage, /proc/mdstat permet de voir l'état actuel du RAID logiciel.

J'ai acheté cette machine pour lancer plusieurs machines virtuelles, et j'ai donc installé rapidement virt-manager pour gérer facilement plusieurs machines virtuelles KVM. Problème : les installeurs étaient vraiment très lents. J'ai installé Debian Testing, OpenBSD 4.9, OpenBSD 5.0, FreeBSD 8, OpenIndiana et Windows Vista. J'ai d'abord remarqué que c'était QEMU (émulation logicielle) et non pas KVM (émulation matérielle) qui était utilisé. La virtualisation matérielle était desactivée dans le BIOS, arf. J'ai du supprimer mes VMs pour les recréer, je n'ai pas trouver comment passer de qemu à kvm pour une VM existante, et de toute façon j'avais arrêté les installations en cours (c'était vraiment trop lent).

Mais ça n'a pas changé grand chose, l'installation était encore vraiment très lente. En fait, au début c'était très rapide, puis tout à coup, les performances s'effondraient : 1 Mo/sec, 700 Ko/sec, ... 3 Ko/sec ! J'ai mesuré les performances de mon système de fichier avec bonnie++ : les performances brutes étaient autour de 234 Mo/sec, très supérieur à ce qu'indiquait l'installeur FreeBSD.

J'ai contacté les développeurs KVM qui m'ont conseillé de voir du côté de btrfs. J'ai alors contacté les développeurs btrfs qui m'ont demandé des détails. Je leur ai indiqué que je ne constatais pas de problème de performance avec Virtualbox. Ils m'ont alors parlé de l'option de cache du disque KVM. Voici la vitesse indiquée au cours de l'installation de FreeBSD selon le mode de cache :

  • writethrough (par défaut) : 1 Ko/sec
  • none : 40 Ko/sec
  • writeback : 1 400 Ko/sec
  • unsafe : 1 500 Ko/sec

L'option unsafe n'est pas accessible depuis virt-manager. La différence entre ces modes est l'interaction avec le système de fichier de l'hôte (btrfs dans mon cas) :

  • writethrough est le mode le plus sûr mais le plus lent : il appelle fsync() après chaque écriture
  • none utilise O_DIRECT et n'appelle jamais fsync(), or btrfs ne supporte pas encore O_DIRECT
  • writeback appelle fsync() quand le système invité utilise une barrière (s'assure que les données sont écrites sur le disque)
  • unsafe n'utilise pas O_DIRECT et n'appelle jamais fsync()

VirtualBox utilise l'équivalent du mode writeback par défaut.

En résumé : si vous utilisez KVM et que le système de fichier qui stocke les images disques est btrfs, changez le mode de cache du disque dur KVM avant l'installation du fichier pour le mode writeback.

mardi 20 septembre 2011

Séries télé que j'aime

Depuis quelques années, les séries télé deviennent aussi importantes, voir plus, que les films. Elles ont beaucoup gagné en diversité, et vu le nombre important de séries, il devient difficile de s'en sortir. Alors je me suis dit qu'il serait intéressant de partager les séries que j'aime, comme ça peut-être que d'autres en feront de même et m'en conseilleront d'autres :-) Voici les dernières séries que j'ai vu et qui m'ont beaucoup plus.

Skins. Vie d'adolescents anglais, chaque épisode se met à la place d'un personnage différent, série assez trash (drogue, sexe, violence), mais également dure car elle montre la souffrance des adolescents qui traversent des passes difficiles.

Pushing Daisies. Un mec a le pouvoir de réveiller les morts pendant 60 secondes, il s'associe avec un détective privé pour exploiter son don, et le reste du temps il cuisine des tartes dans son salon de thé. Il vit avec une femme qui il a rescucité et qui pourrait donc mourir s'il la retouche. Décors un peu surréalistes et personnages atypiques, une série qui a des airs de film de Tim Burton.

The Big Bang Theory. Sitcom geek avec 4 physiciens inadaptés à la vie sociale qui ont comme voisine une blonde idiote. Très drôle, je pensais que l'humour était réservé aux geeks, et pourtant ma femme aime beaucoup cette série !

The Office (US). Un ami m'a prêté la série The Office (UK) que j'ai regardé sans grand intérêt : humour british qui m'a laissé indifférent (alors que pourtant j'adore les Monty Python !). Par contre, quand j'ai vu le remake américain avec Steve Carell, j'ai vraiment adoré. Cette série décrit le quotidien d'employés de bureau qui font des bétises pour passer le temps et ont un patron délirant. Le patron, Steve Carell, a des sautes d'humeur, est gauche, idiot mais attachant. On s'attache vite aux employés blasés par leur travail et leur patron.

Dexter. Un tueur en série qui ne tue que d'autres tueurs en série, après s'être assuré qu'ils sont coupables, chose facilitée par le fait qu'il travaille pour la police. Dexter mène une double vie entre sa famille et ses amis, et sa vie de tueur, dualité qui est le fil conducteur de la série. On se demande sans arrêt quand est-ce qu'il va se faire prendre.

Weeds. Série délirante où une mère de famille sans emploi se met à vendre du cannabis suite au décès brutal de son mari. Elle a du mal à gérer ses enfants et se retrouve souvent dans de drôles de situation. La plupart des personnages sont assez délirants dans leur genre.

How I met your mother. Sitcom fortement inspiré de Friends (mais pas trop). De jeunes new yorkais se retrouvent tous les jours dans un bar pour se raconter leur journée, et forcément il leur arrive plein d'histoires. On devient vite accro de cette série car on a l'impression de vivre avec ses personnages, et c'est réconfortant de les retrouver tous les soirs au même endroit.

Enfin, je regarde des séries pour fille avec ma femme, Desperate Housewives et Grey's Anatomy, mais j'ai trop honte pour vous en parler !

Entretiens d'embauche chez Google

Le recrutement dans la société Google étant hors du commun, je me décide enfin à vous raconter mon expérience.

Première tentative avortée, en télétravail

Avril 2010, j'ai postulé chez Google sur leur site web, en espérant y travailler depuis mon domicile. J'ai rapidement été contacté par courriel par le recruteur Dean. Sauf que quand j'ai demandé si le télétravail était envisageable, Dean m'a répondu que non, et j'ai donc laissé tomber.

Octobre 2010, Sarah, une autre recruteuse de Google, m'invite à postuler. Je lui réponds que j'ai déjà postulé, que je ne souhaite pas déménager et que donc je ne vais pas repostuler.

Deuxième tentative, ingénieur en sécurité à Zurich : questionnaire puis entretien au téléphone

Début décembre 2010, je change d'avis et je me décide à postuler chez Google une 2e fois pour travailler à Zurich (Suisse germanophone). Deux jours plus tard, la recruteuse Aleksandra m'invite à répondre à quelques questions par courriel : décrire 3 projets techniques dans lesquels je suis impliqué ; décrire mon expérience C++, Java et Python ; décrire mon implication dans le logiciel libre. Hum, on dirait qu'ils n'ont pas du tout lu mon CV.

Mi-décembre, j'appelle la recruteuse Eve qui me propose un entretien téléphonique avec Nikolaus. Ce dernier m'a posé des questions techniques sur la sécurité. Ayant passé les deux premières épreuves avec succès, on me propose des entretiens sur site (Zurich). Liam me confirme par courriel l'entretien début janvier avec les informations pratiques. Autant j'étais à l'aise en anglais avec Nikolaus, autant j'avais le plus grand mal à comprendre Eve et elle ne me comprenait pas non plus.

Deuxième tentative : 5 entretiens à Zurich

Fin janvier 2011, j'ai passé cinq entretiens à la suite (avec une pause le midi quand même !). Le premier entretien était avec Tavis Ormandy, ce qui m'a impressioné. J'avais lu plusieurs articles de Tavis qui a trouvé de nombreuses failles de sécurité importantes avec des exploits très techniques. Tavis m'a demandé d'implémenter strlen(str) en assembleur Intel x86. J'ai un peu regretté d'avoir mis l'assembleur sur mon CV, je ne l'avais pas pratiqué depuis plusieurs années... Tavis semblait satisfait de mon code, mais je doute qu'il était correct :-) Il m'a questionné sur les protections du noyau et de la libc, on a parlé de randomisation de l'espace d'adressage.

Lors d'un entretien, on m'a demandé d'écrire un algorithme pour générer un jeu de données pour fuzzer une application. Sauf que je n'ai rien compris de la manière dont les données devaient être générées. Le recruteur m'a expliqué pendant 10 min, et j'ai encore mis au moins 5 minutes à comprendre ce qu'il voulait. J'ai écrit un truc sans vraiment comprendre ce que j'écrivais. C'était assez frustrant de rester bloquer comme ça, j'avais l'impression que le recruteur n'arrivait pas à formuler correctement sa question et que j'étais coincé à cause de lui.

Un entretien avec deux personnes m'a marqué. Celui qui parlait m'a demandé si ça me dérangait qu'il utilise un ordinateur portable. Euh... je n'ai pas osé dire la vérité, que oui ça me gênait. Pendant que je parlais, ils ne me regardaient pas mais regardaient leur ordinateur en notant nerveusement tout ce qui sortait de ma bouche. La seconde personne était en formation pour apprendre à faire passer un entretien.

On m'a demandé comment tester un site web, comment éviter qu'un widget ajouté à une page web puisse attaquer la page qui l'inclut, et d'autres questions que j'ai oubliées.

J'ai écrit beaucoup de code sur un tableau blanc. Pas mal d'exercices d'algorithmique, certains en C, certains en Python (j'avais le choix du langage).

Les locaux de Zurich sont vraiment très jolis, semblent calmes, agréables et ludiques. Il y a des consoles de jeux, des espaces détente et des cafètes très bien équipées. La cantine est très bonne. On peut utiliser un tobogan ou des barres de pompier pour descendre entre deux étages. Cette journée d'entretien était épuisante, à cause de la quantité de questions et parce que c'était entièrement en anglais (que je pratique très rarement à l'oral). D'ailleurs, on m'a dit qu'on peut très bien ne parler qu'anglais à Zurich, ville qui héberge 30% d'expatriés !

Je n'ai pas été pris pour ce poste, je n'avais pas le niveau. Je pense que je n'avais pas assez de connaissances sur le web et sur l'exploitations de failles de sécurité. Eve m'a proposé une deuxième journée d'entretien pour un autre poste. Étant un peu dégoûté de ne pas avoir été pris (quoi, ils n'ont pas reconnu mes talents !?), j'accepte sans grande motivation.

Troisième tentative, ingénieur en test de sécurité : 4 entretiens à Zurich

Fin février, nouvelle journée d'entretiens à Zurich, pour quatre entretiens cette fois-ci. Le premier entretien était catastrophique pour moi. L'énoncé de l'exercice était simple, mais j'ai mis longtemps à comprendre. À partir de pièces de monnaie avec une valeur donnée, il faut rendre la monnaie avec le minimum de pièces. Je propose un algorithme naïve qui fait la division en partant de la pièce ayant la plus grande valeur. Je ne comprends pas en quoi cet algorithme n'est pas bon, car j'avais pris {1, 2, 5} comme pièces (ce qu'on m'avait donné en exemple). En fait, {1, 2, 5} n'est pas un bon exemple. Avec {1, 5, 7, 10}, mon algorithme n'est pas optimum pour 12 (il donne {10, 1, 1} au lieu de {7, 5}). Déjà, on a bien perdu 15 min sur les 45 de l'entretien avec ça. Ensuite, il fallait diviser le problème en sous-problèmes (diviser pour régner) en cachant le résultat des calculs précédents. Enfin, cette idée m'était soufflée pour que je la trouve moi-même, mais je n'y pensais pas car je ne voyais pas en quoi ça accélérait le calcul. Je crois qu'au final, l'idée était bonne, mais maintenant j'ai un doute :-)

Durant les autres entretiens, on a beaucoup parlé de tests, de méthodes de management et de travail, et d'assurance qualité plus généralement.

De mémoire, les entretiens se sont bien passés (à part le premier). Bah... je n'ai pas non plus été pris. Tant pis.

En fait, j'ai relancé Eve plusieurs fois par courriel et par téléphone. Elle ne répondait pas puis s'excusait d'avoir manqué mes appels. D'ailleurs, ce n'était pas elle qui m'avait accueilli lors de la ma 2e journée d'entretien à Zurich. Après plusieurs semaines, je me suis dit que c'était fichu. J'ai eu la réponse négative début avril, soit cinq mois après ma candidature.

Impressions sur le recrutement et sur Google

Les entretiens m'ont laissé une drôle d'impression. Déjà, j'ai eu de nombreux interlocuteurs entre le début et la fin de ma candidature. C'est frustrant qu'on m'ait posé des questions dont les réponses étaient dans mon CV. Souvent j'ai du me répéter car les personnes avec qui je parlais ne me connaissaient pas. C'est pénible et un peu vexant. Ayant travaillé dans une société d'une vingtaine de personne, j'étais perdu et plus tout à fait sûr de vouloir travailler dans une société de 25 000 employés. Je garde une impression négative du recrutement. La lenteur du processus était également pesante (surtout à la fin). Dans les autres sociétés où j'ai postulé, j'ai toujours eu la réponse en moins d'un mois.

La majorité des entretiens étaient intéressants et se sont bien passés. Malheureusement, deux ont vraiment bloqués car je ne comprenais ce qu'on me demande (ce n'était pas un problème de la langue). J'ai un peu l'impression de ne pas avoir été pris en partie à cause des recruteurs qui n'étaient pas toujours au point. Sûrement que je me dis ça pour garder mon honneur sauf :-)

Google demeure une société assez mystérieuse pour moi. Elle cherche tellement à se donner une bonne image que ça en devient louche. D'ailleurs, il semble que l'esprit d'entreprise soit un critère très important dans les recrutements. Il semble qu'il faille vouloir à tout prix bosser pour Google. Bon ça tombait bien, je voulais beaucoup y bosser ;-)

Au moins, j'aurai dormi gratos dans un superbe hôtel à Zurich avec voyage (en train) payé... Mis à part que j'ai du avancer les 220€ x 2 pour les 2 nuits d'hôtel, plus le train, plus le taxi. J'avais plus de 600€ de notes de frais, envoyés par courrier dans une grosse enveloppe en Pologne. Enfin, j'ai recupéré les sous ! C'est classe de la part de Google de payer même si on n'est pas pris ;-)