Intel NUC vs programista
Kiedy dostałem do zabawy komputer Intel NUC z zadaniem próby opisania go w środowisku biznesowym, wpadłem w pewien popłoch. Bo ja się nie znam na środowisku biznesowym. Jedyny biznes na którym się trochę znam, to wytwarzanie oprogramowania. Ale w sumie dlaczego nie? Czy malutki komputer, który w porównaniu do mojej maszyny podstawowej jest mikroskopijny (a trzeba przyznać, że moja podstawowa maszyna i tak jest mała) będzie w stanie sprostać wymogom pracy pod kontrolą "ciężkich" narzędzi programistycznych?
(porównanie z cukierkami M&M's, aczkolwiek nieco zaburzone, bo to "specjalna", 3 razy większa edycja od zwykłych ;‑))
Można się spodziewać, że tak, bo przecież pracuję wielokrotnie na laptopie-ultrabooku, ale moim podstawowym komputerem jest akurat przypadkiem komputer klasy biznesowej - prawie trzyletni Dell OptiPlex 9010 z procesorem i5‑3470, doposażony w 16 GB pamięci RAM, bardzo specyficzną kartę graficzną Sapphire Radeon 7750 i niedrogi (i zdecydowanie za mało pojemny) dysk SSD Samsunga, z niesławnej serii 840 EVO. Nie uważam go za sprzęt ani nowy, ani niesamowicie "wypasiony", ale świetnie spełnia swoje zadania. W jaki sposób wypadnie porównanie go z malutkim NUC‑em?
(z góry przepraszam za bałagan i stado kabli widoczne z tyłu)
Komputer, który dostałem w ramach akcji "Przetestuj sprzęt od Intela", oznaczony jest NUC5i7RYH i wyposażony jest w dwurdzeniowy procesor Intel i7‑5557U, gdzie końcówka U ma u Intela znaczenie "ultramobilny", co może przerażać - bo procesor tego typu (aczkolwiek słabszy, i5‑4210U) mam przecież w superlekkim ultrabooku. Jest to dwurdzeniowy układ z HyperThreading, czyli system "widzi" go jako cztery procesory logiczne. O ile komputery NUC standardowo kupowane są bez pamięci i dysku twardego, o tyle egzemplarz, który dostałem do testów ma 8 GB pamięci operacyjnej oraz dysk twardy SSD Intela o pojemności 360 GB (oznaczony jako próbka inżynieryjna). Nie są to słabe parametry - w sam raz, aby przetestować ich działanie na wymagających procesach wytwarzania oprogramowania :‑)
Mam do dyspozycji w domu dwa monitory - pierwszym z nich jest 23" Dell U2313HM o rozdzielczości 1920x1080, a drugim jest mniejsza, 19", kwadratowa, iiyama E1906S o rozdzielczości 1280x1024. Karta graficzna Intel Iris 6100 nie powinna mieć problemów z uruchomieniem tych dwóch ekranów, nie są to wielkie ekrany 4K. I faktycznie, wyświetlanie pulpitu i okienek nie jest dużym problemem dla niej. Aczkolwiek ja miałem problemy. NUC wyposażony jest w gniazdo MiniDisplayPort oraz gniazdo mini-HDMI. O ile miniDP nie jest problemem, bo tak mam podłączony monitor, o tyle mini-HDMI jest dla mnie dziwne. Po pierwsze dlatego, że spokojnie zmieściłoby się tam pełnowymiarowe HDMI. Po drugie - jego mniejsza odmiana jest zadziwiająco niepopularna u mnie w domu i okolicy. Jakaś dobra dusza do pudełka z NUC‑em dołączyła co prawda kabelek mini-HDMI do HDMI, aczkolwiek musiałbym jeszcze gdzieś wetknąć wtyczkę do mojego starego monitora, który ma tylko DVI. Oczywiście, koszt przelotki (3,50 zł) nie jest zatrważający, ale nie rozumiem sensu wykorzystania tutaj mniejszego gniazda. Jeszcze zrozumiałbym jego odmianę micro, ale dlaczego jest mini?
(dwa monitory w akcji i ciężkie zadania w tle)
Zostawiając tę kwestię, zajmijmy się dalej. Instalacja systemu operacyjnego (Windows 10 Pro, wersja 1511) z pendrive poszła gładko, system uruchomił się w trybie UEFI. Skonfigurowałem system do moich ogólnych potrzeb, Windows Update zainstalował potrzebne sterowniki i zająłem się instalacją pozostałych składników, które mogły posłużyć do przetestowania działania komputera.
Już wtedy zauważyłem pewien problem z kulturą pracy - malutki wentylatorek NUC‑a pracuje w jednostajnym rytmie i zwyczajnie męczy moje ucho. Na tyle, że zacząłem dla pudełka szukać jakiegoś innego miejsca niż to obok monitora - pod biurkiem, gdzie miejsce komputerów. Umieszczony tam nadal jest dla mnie zauważalnie bardziej drażniący niż "duży komputer". A kiedy NUC obciążany jest bardziej, jego maleńki wentylatorek zaczyna gwałtownie przyspieszać.
Pewnym problemem okazuje się też liczba portów USB - zaledwie jest ich 4, po 2 z przodu i tyłu urządzenia. A przecież ze 2 zajmie klawiatura i mysz. A tu jeszcze pendrajwy, kabelki do podłączania zewnętrznych urządzeń, może zewnętrzne dyski... Owszem, ja mam klawiaturę i mysz bezprzewodową na jednym odbiorniku, można również pokusić się o wersje na wbudowany w NUC Bluetooth. Komputer ma również we wnętrzu miejsce na dorzucenie jeszcze jednego dysku w rozmiarze 2,5", oprócz dysku systemowego M.2, ale to może okazać się szybko za mało. Ja jednak, jako posiadacz Della w odmianie obudowy desktop, nie narzekam na to, bo sam mam niedobory miejsca wewnątrz obudowy :‑)
Niekoniecznie podoba mi się również złącze głośników/słuchawek umieszczone tylko z przodu urządzenia, przez co kabel idący dalej do tyłu i podłączony do głośników nie wygląda zbyt pięknie.
NUC vs CoreCLR
CoreCLR to nowe środowisko uruchomieniowe dla .NET, rozwijane w ramach wolnego oprogramowania. Pobrałem świeżą kopię z GitHuba i wykonałem polecenie "build", co zaaowocowało procesem budowy m.in. podstawowej biblioteki mscorlib. Proces ten zajął NUC‑owi 9 minut, 46 sekund i 96 setnych sekundy. W porównaniu, to samo zadanie mój Core i5‑3470 wykonał w 9 minut, 40 sekund i 14 setnych, więc różnica nie była specjalnie wielka.
Ale wspomniany mały, szybkoobrotowy wentylatorek mnie niestety zdenerwował. Po absolutnym wyciszeniu wszystkiego w okolicy (i teście prowadzonym w godzinach, kiedy normalni ludzie są w pracy), mój telefon wraz z aplikacją "Noise Meter" wskazywał położony na stole obok myszki wartość 34‑35 dB. Podczas kiedy NUC po prostu pracował sobie spokojnie (około 20% użycia procesora) było również tylko 34‑35 dB. Jednak kiedy przyspieszył wiatraczek podczas kompilacji, wartość sięgała 37‑38 dB. Wydaje się, że to mało, ale skala głośności jest logarytmiczna - różnica ta oznacza dźwięk 2 razy głośniejszy! Telefon położony na pracującym pod pełnym obciążeniem NUC wskazywał 61 dB, a na pracującym na "jałowym biegu" - 55 dB. Przepraszam ze czepialstwo tego jednego parametru, ale dźwięk był dla mnie niezwykle irytujący.
Same procedury operacji na pobranym repozytorium Git są bardzo szybkie, czego zasługa jest choćby w świetnym zamontowanym dysku SSD (i samym gicie). Bezproblemowa jest również praca na wielu procesach w tym samym czasie, podczas budowy drugiej fazy CoreCLR (pakietu testów) surfowałem bez zająknięcia po Internecie i pobierałem kolejne repozytoria, jak również przeglądałem je i wyszukiwałem w nich pewne pliki.
NUC vs Visual Studio
Praca z Visual Studio była przyjemna, ociężałość środowiska była podobna jak w przypadku innych komputerów. Bezproblemowo również działały emulatory Windows 10 Mobile i Androida (przy użyciu Visual Studio Emulator for Android). Nawet jednoczesne uruchomienie tychże i testowanie na nich aplikacji nie było specjalnym wyzwaniem dla komputerka, dowodząc, że współczesne procesory są na tyle wydajne, że niekoniecznie nawet widzę sens ich wymiany nawet w bardziej rozbudowanych sytuacjach.
Nie było to problemem na tyle, że doposażyłem Visual Studio w arcywroga wszelkiego płynnego działania - dodatki. ReSharper 10 nie spowolnił środowiska wystarczająco - albo projekt, na którym testowałem zmiany, nie był wystarczająco skomplikowany, a może wersja 10 została znacząco usprawiona pod tym względem? NUC nie dostał zadyszki nawet jak chwilę pobawiłem się na prostym projekcie w Unity. Na tyle zaciekawiło mnie zachowanie Unity, że specjalnie sprawdziłem jego działanie na większym projekcie przykładowym i również działał dobrze, renderując podgląd gry w ponad 400 FPS.
NUC vs vagrant
Przy okazji testowania jak sprawdzi się vagrant zobaczyłem jak sprawdza się interfejs sieciowy, kopiując wcześniej pobrane obrazy - i działa perfekcyjnie. Pliki kopiuje ponad 110 MB/s, prawie 980 Mbit/s transferu pomiędzy dwoma komputerami (po protokole SMB2), czyli całkowite wysycenie mojego gigabitowego połączenia, a dodatkowo sam jest serwerem RDP (stąd również różnica 110 MB/s i 980 Mbit/s).
Vagrant jest narzędziem do zautomatyzowanego tworzenia i konfiguracji maszyn wirtualnych do "szybkich" zastosowań - takich, które się szybko tworzy i szybko usuwa. Dostawcą wirtualizacji w moim przypadku był Hyper-V z Windows 10.
Tworzenie i uruchamianie kilku przykładowych maszyn (ericmann/trusty64, mwrock/Windows2012R2) przebiegało sprawnie i szybko (wielka w tym zasługa SSD), komputer nie krztusił się w żaden sposób, kiedy je uruchamiałem.
Garść dodatkowych uwag
Bardzo fajny jest "visual bios", czyli obsługiwane za pomocą myszy środowisko konfigurujące podsystem UEFI. Pozwala ustawić m.in. tryb pracy wspominanego wentylatorka, ja używałem domyślnie "balanced", ale jest również opcja "quiet", której jeszcze nie zdążyłem dokładnie przetestować. Dodatkowo posiada takie funkcje jak zrobienie zrzutów ekranu (!).
Podoba mi się oznaczony na żółto port USB z przodu, który ładuje podłączone urządzenia, nawet jeżeli komputer jest wyłączony. Według taniego miernika tablet pobierał prąd o natężeniu 0,8 A, co jest bardzo przyzwoitą wartością (z ładowarki ściennej tablet wyciągał 1,5 A, a sama ładowarka maksymalnie może dostarczyć 2,1 A według producenta). Tuż po włączeniu komputera jednak prąd spadał do 0,45 A (słusznie zauważył w komentarzach @Kaworu - wykrycie aktywności linii danych i przejście na zgodność ze specyfikacją). Dodatkowo podłączenie tak obciążającego urządzenia na moment rozłączało port (mam nadzieję, że nie zepsułem).
Sam procesor się lekko przetaktowuje podczas ciężkiej pracy, osiągając maksymalnie 3,35 GHz z tego, co zauważyłem. System podaje jego taktowanie na 3,1 GHz.
Komputer wypadł w moich zabawach na tyle dobrze, że postanowiłem go poddać jeszcze jednemu testowi w środowisku zbliżonym do produkcyjnego. I już jestem ciekawy jak mu pójdzie.