czwartek, grudnia 31, 2009

Benchmarki z wirtualizacją

Platforma integracyjna wystawia WebService opakowujący select i procedurę noop na bazie Oracle. System fizyczny to 64-bitowy Windows 2008 R2 na dwurdzeniowym procesorze AMD 2,3GHz + Oracle 11g, 4GB RAM-u, windowsowy RAID0 na dwóch Seagate-ach. System wirtualny ma jeden wirtualny procesor i 2GB RAM-u. Platforma A to Sun GlassFish ESB 2.1, platforma B to MS BizTalk 2009. Pomiar za pomocą SOAP-UI dla jednego wątku w ciągu 60 sekund, czas w milisekundach.


VMware dla 32-bitowych gości używa binarnej translacji (BT). Średni czas systemu out-of-box to 2344 ms. Po zmianie parametru MaxReceiveInterval z 500 na 50 mamy 1066 ms (tuning Low Latency wg dokumentacji producenta). Przeniesienie redo logu bazy danych obsługującej platformę na inny dysk daje przyśpieszenie 17ms.




32-bitowy Windows (binarna translacja) ma podobną wydajność co 64-bitowy OpenSolaris (sprzętowa wirtualizacja) - około 10% narzutu na wirtualizację. VirtualBox wypada słabo - strata wynosi ponad 20%. JRockit jak zwykle wymiata, podmieniając Javę na wirtualizowanym Windowsie dostajemy -6%.

A teraz sprawdzimy 32-bitowe OpenSUSE 11.2 z kernelem 2.6.31 z obsługą VMI, system jest na XFS-ie z opcją noatime i z JRockit-em 6.0.


Wirtualka jest szybsza od rzeczywistej dwurdzeniowej konfiguracji! 350ms. W trybie BT 415ms.

Swoją drogą ten sam select w zwykłym kodzie Javy trwa odpowiednio 3 / 15/ 80 ms (w zależności czy PreparedStatement i Connection są reużywalne). Gdybym chciał mieć coś szybkiego i za darmo i z orkiestracją to wziąłbym Grailsy i zrobił w nich Service-y. Serwisy wewnętrznie można wołać natywnie, a zewnętrznie wystawić po SOAP-ie i JMS-ie.

środa, grudnia 30, 2009

Avatar

Kiedyś efekty specjalne robiło się na maszynach SGI z systemem operacyjnym Irix na bardzo wydajnym systemie plików XFS z dziennikiem (XFS został sportowany na Linuksa i do tej pory w testach potrafi skopać tyłek ext4, nie mówiąc już o ext3). Ludzie z SGI stworzyli cplusplusowego STL-a. Na sprzęcie SGI powstał Park Jurajski. Filmy renderowało się też na Linuksie z Alphami EV6 (świetny procesor; ludzie którzy go konstruowali ratowali się ucieczką do AMD i stworzyli 64-bitowego Athlona). Wszystkie sympatyczne filmy Disneya wyprodukowane przez Pixar (np. Potwory i spółka) powstały na Mac-ach G5 (Apple ma świetne narzędzia do obliczeń rozproszonych MPI). Avatara zrobiono na GPU Nvidia Tesla. Już pierwsze ujęcia maszynerii w bazie ukazują wyrenderowany świat, który wygląda dużo realistyczniej niż jakikolwiek z 3DMarków. Pamiętacie 3DMark 03 Demo Nature, kiedy byliśmy w szoku, że tak pięknie można wyrenderować świat? Teraz mamy las w Avatarze.

Jakie jest przesłanie filmu? Ludzkość używa postępu technologicznego do niszczenia dobra i piękna. Żądza posiadania, żądza władzy. Wszystko, co stoi na drodze, zostanie zniszczone.

"Jeśli do umacniania rozwoju potrzebni są coraz to liczniejsi technicy, to o wiele bardziej potrzebni są ludzie mądrzy; zdolni do wnikliwej refleksji, poszukujący nowego humanizmu, dzięki któremu ludzie naszych czasów poprzez przyjęcie najszlachetniejszych wartości (...) mogliby odnaleźć samych siebie." "Aby [postęp] był prawdziwy, powinien on być zupełny, to znaczy winien przyczyniać się do rozwoju każdego człowieka i całego człowieka" (Populorum progressio)

Czy Avatar bedzie filmem przełomowym? Matrix był filmem przełomowym. Kojarzycie ujęcie - replay w Aniołkach Charliego, kiedy Drew Barrymore wypada z okna. To właśnie jest tzw. efekt Matriksa. 

Dla informatyków bez zmian: kultowym filmem numer jeden nadal pozostaje Matrix; Matrix był UNIX-em, a Trinity przy hackowaniu używała nmap-a. Matriksa ogłądało się także na BeOS-ie - był kodek 3vix do Media Playera i na Linuksie, gdzie na Debianie przez modem ściągało się GCC, żeby przekompilować mplayer-a z flagami dla K6-3...

Mogliby grzać w tej Feminie, trochę zmarzłem przez te 2 godziny.

niedziela, grudnia 27, 2009

D-Link G624

Spalił się switch ethernetowy Infineon ADM6996M za 10$ i po ruterze...


czwartek, grudnia 24, 2009

Lies, damn lies and benchmarks

Chcemy porównywać jakieś produkty występujące na różne systemy operacyjne. Ponieważ jesteśmy nowocześni używamy wirtualizacji. Jeden produkt wpakujemy do Ubuntu JeOS ze wsparciem dla parawirtualizacji (VMware: vmi.present ="True" na starszych Xenonach lub Opteronach) a drugi do zwykłego Windows-a.


Zaglądając do pliku paravirt.h widzimy funkcje związane z obsługą stronicowania, przerwań, mierzenia czasu. Jeśli zamiast emulacji w tych dziedzinach będziemy mieli bezpośrednie wywołania kodu hipervisor-a wirtualizowany system operacyjny powinien być sporo szybszy. Czyli jeśli testowany produkt zachowywałby się tak samo na Linuksie jak i Windowsie, to w wirtualnym środowisku będzie szybszy na Ubuntu JeOS (wygra benchmarki).

Inna bajka jest z wirtualizacją 2.0 (nested paging): tu wszystkie maszyny wirtualne mogą śmigać.

środa, grudnia 23, 2009

GlassFish na produkcji

Po zainstalowaniu GlassFish działa na ustawieniach odpowiednich do dewelopmentu. Przed wypuszczeniem go na produkcję, gdzie oczekuje się od niego pewnej wydajności, trzeba pozmieniać parę rzeczy.









piątek, grudnia 18, 2009

Non-standard BizTalk/Oracle example





It really works...

wtorek, grudnia 08, 2009

No (distributed) transactions in BizTalk

Database insert to different data sources. Atomic doesn't work in Visual Studio, so change transaction type to Long Running.

Now it doesn't work in real life.

BizTalk and WCF-SQL Send Ports

Add -> New generated item -> Consume WCF Service, orchestration looks reasonably.


We deploy it and run and... it doesn't work. Orchestration is dehydrated and in Event Viewer we see 'action not understood'.

Fix is to change Action in WCF Send Port configuration from XML fragment to text

- or -

change port operation name to Action name.

sobota, grudnia 05, 2009

OpenESB revisited

We're going to create simple transactional process inserting data into tables of two XA data sources. Let's create design time JDBC connections.


The type of Database Service Engine operation is table. Here we can see generated artifacts.


Now, we have to remember that this configuration has been generated using design time JDBC connection. To use it with runtime we need to change JNDI location of database.


Presented BPEL process on the left side has got PartnerLink connected with generated by us abstract WSDL (its name should match process name). On the right side there are Partner Links from mssql1 and mssql2 bindings. The process is transactional.




To see input and output port of BPEL JBI module we have to rebuild Composite App.


We can add different bindings to our BPEL orchestration (SOAP, JMS, WCF, Quart Scheduler ...).




After JDBC data source setup and app deployment, we can check that our composite app works fine.


Having modified db schema for table tab1 in second data source we can se that new data is not inserted to tab1 in first data source - our BPEL process is transactional.

sobota, listopada 28, 2009

BizTalk 2009 BAM Portal

Nie udaje się go skonfigurować na 64-bitowym W2K8 R2: The error indicates that IIS is in 64 bit mode, while this application is a 32 bit application and thus not compatible.

Trzeba włączyć 32-bitowe aplikacje na 64-bitowym IIS-ie.

poniedziałek, listopada 23, 2009

Clound AntiVirus

W mediach internetowych trwa kłótnia między Pandą i G Datą.

Punkty z heurystyki: plik jest ukryty lub systemowy; plik jest w koszu; plik jest skompresowany UPX-em albo czymś podobnym; plik podejrzanie używa GetProcAddress32 i VirtualAlloc; plik ma funkcjonalność wysyłania poczty; plik dodaje się do autostartu itd.
Jeżeli suma punktów przekroczy entry-level to dane o pliku są zapisywane w chmurze: nazwa, scieżka, md5sum, punkty z heurystyki, [blob]. Jezeli rekordów w bazie jest wystarczająco dużo w jednostce czasu to przekraczamy low-level i możemy automatycznie okreslić plik jako podejrzany (1). Następnie plik idzie do standardowej analizy i ewentualnie trafia do definicji wirusów albo ulepszane są definicje heurystyczne (2). Żeby botnet nie triggerował niszczenia plików systemowych przez Cloud Antivirus-a w przypadku (1) producent antywirusa dysponuje bazą white-list (3). Tak mniej więcej działa G Data. Chmura zapewnia bezpieczeństwo w okresie czasu od (1) do (2) uwzględniając (3).

Antywirus w wydaniu Pandy jednak ma definicje (w folderze C:\ProgramData\Panda Security\Panda Cloud Antivirus\NPS), a wirusy "chmurowo" identyfikuje za pomocą sum kontrolnych (CRC32, SHA, SHA512, MD5) wysyłanych na serwer protokołem HTTP (dane wysyłane są w paczkach dla wielu plików w przypadku skanowania wielu obiektów). W odpowiedzi dostaje informacje o stanie pliku (czysty, zawirusowany, podejrzany - wymaga wysłania do analizy). Dodatkowo wykrycie wirusa z baz powoduje przesłanie informacji statystycznej do serwera Pandy.

Dostęp do chmury można zepsuć modyfikując plik %WINDIR%\system32\drivers\etc\hosts:

127.0.0.1 cache2.pandasecurity.com
127.0.0.1 iext.pandasecurity.com
127.0.0.1 cache1.pandasecurity.com
127.0.0.1 acs.pandasoftware.com

Podsumowując: Panda i G Data koncepcyjnie mają podobne produkty. Panda posiada definicje antywirusowe oraz silnik chmurowy. Heurystyka z definicji powoduje w razie potrzeby sprawdzenie pliku w chmurze - tak samo robi G Data AntiVirus. Dlaczego Panda jest darmowa? Firma pewnie chce przetestować rozwiązanie, które myśli udostępnić za pieniądze użytkownikom korporacyjnym. Silnik skanujący Pandy PSANHost.exe podczas pracy wcale nie jest taki lekki, a cały pakiet łatwo zepsuć. Panda zrobiona jest po części w C++ Builderze.

Kłócą się panowie, którzy chyba mają stanowiska marketingowców...

KDE 4.3.3 na Windows

Natywna wersja windowsowa powoli się stabilizuje. Sporo aplikacji działa bez problemów.



niedziela, listopada 22, 2009

DSEE 7.0 na NT 6.1

Po rozpakowaniu windowsowej wersji DSEE w katalogu var mamy plik dsee7.war, który należy zadeployować sobie na GlassFishu. Najpierw jednak inicjalizujemy Directory Server i podnosimy cacao.

Cacao używa samodzielnie podpisanego certyfikatu SSL, który nie przejdzie w DCC 7. Dlatego wyeskportujemy certyfikat i zaimportujemy go do keystore'a, którego używa GlassFish.





środa, listopada 04, 2009

Switchable graphics a Acer Timeline i Windows 7

Działające sterowniki pozwalające na przełączanie między ATI a Intelem ma Lenovo. Sterowniki należy rozpakować i podmienić plik INF dla Windows 7 64-bit. Minus jest taki, że sterowanie jasnością LCD nie działa (kwestia BIOSu albo Launch Managera).

Update: Są dedykowane sterowniki do W7.

poniedziałek, listopada 02, 2009

BizTalk 2009 z Visual Studio 2008

BizTalk 2009 pozwala na tworzenie projektów w Visual Studio, ale z zainstalowanym Visual C# (inaczej będziemy widzieć 'project creation failed'). Ponadto Service Pack 1 do VS2K8 może wymagać poprawki do Rejestru:
REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\Projects\{FAE04EC0-301F-11d3-BF4B-00C04F79EFBC}]
"PossibleProjectExtensions"="csproj;btproj"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\9.0\Projects\{FAE04EC0-301F-11d3-BF4B-00C04F79EFBC}]
"PossibleProjectExtensions"="csproj;btproj"
KC4Z0ZBWWH4G0G

wtorek, października 27, 2009

Acer Aspire 4810TZG

Laptop firmowo zapakowany jest w dość ładne pudełko, w którym znajdziemy kabel zasilający i zasilacz LiteOn z emblematem baterii z liściem (symbol energooszczędności).

W zależności od ilości światła laptop wydaje się być srebrny albo grafitowy. Na obudowie nie będzie już widać palców, co było standardem w Acerach z linii Gemstone. Materiał z tyłu ekranu fakturą przypomina szczotkowane aluminium, natomiast ten w środku w płaszczyźnie klawiatury, jest bardziej śliski. Obudowa nie ma zatrzasków, ekran można odgiąć bardziej niż w modelach Gemstone (co jest plusem, zważywszy dziwne pozycje używania laptopa w warunkach domowych).

Klawiatury używa się dość przyjemnie, nie jest głośna, klawisze mają krótki skok. Niestety na fortepianowej czerni klawiszy pozostają odciski palców, co wygląda po pewnym czasie mało estetycznie. Z drugiej strony, gdyby klawisze były wykonane z szorstkiego, czy też matowego plastiku (taki jest w Travelmate'ach z linii Timeline), pewnie pisanie byłoby trochę mniej przyjemne.

W Timeline'ach mamy do dyspozycji touchpad multitouch - do przetestowania w windowsowej przeglądarce zdjęć - zoom in, zoom out, następny obrazek (zbliżamy/oddalamy od siebie dwa palce, dwoma palcami przesuwamy szybko w poprzek gładzika). Powierzchnia gładzika jest wykonana z tego samego materiału, co obudowa z tyłu ekranu, nie jest śliska.


Laptop ma matrycę AU Optronics podświetlaną diodami LED w rozmiarze 14'' o rozdzielczości 1366x768 pikseli. Krótsza wysokość ekranu w porównaniu do standardowych wymiarów 1280x800 wzmaga wrażenie sporej długości pulpitu. Kolory są dość dobrze odwzorowane, podświetlenie ma 10 stopni jasności, z czego w normalnym użytku do wykorzystania są pierwsze trzy, dalej obraz będzie za jasny. Laptop ma dwie karty graficzne: zintegrowaną Intel i PCI-Express ATI Radeon 4330. Przy włączonym Intelu Radeon nie jest prawidłowo wyłączany i laptop się grzeje w dolnej lewej częsci, dlatego lepiej wyłączyć Intela - laptop pozostanie ledwie ciepły i niemal bezgłośny.

Obudowa ma cal grubości, przez co jest trochę mniej solidna od tej ponad 3,5 centymetrowej w modelu Aspire 4x30. W lewej częsci pod ekranem znajduje się włącznik, jest on umieszczony we wklęśnięciu względem płaszczyzny klawiatury, a do tego jest wąski, przez co trudniej przypadkowo wyłączyć laptopa, ale przy tym trudniej go włączyć palcem wskazującym lewej dłoni - po pewnym czasie można przyzwyczaić się do używania palca wskazującego prawej dłoni z ułożeniem wzdłuż przycisku. W drugim krańcu obudowy jest przycisk otwierający tackę napędu optycznego - ta jest solidna i bardziej odporna na wpadanie w rezonans (co było standardem przy krzywych płytach w innych Acerach).

Laptop wyposażono w dwurdzeniowy procesor Intel Pentium SU4100 @ 1.3GHz z 2 MB pamięci cache L2. Procesor ten to Intel Core 2 Duo SU7300 z nie działającą wirtualizacją i mniejszym o 1/3 cache-em L2 (zaś SU7300 to wolniej taktowany SU9400). Windows 7 w konfiguracji z 4GB RAM-u śmiga. Przy nic nierobieniu jedno ładowanie baterii potrafi starczyć na ponad 9 godzin. Przy przeglądaniu Internetu bez flasha będzie to 8 godzin.

Pytanie, czy do pełni szczęscia potrzebna nam wirtualizacja? Laptop ten raczej nie został do niej zaprojektowany, bo ma chodzić długo na baterii (włączenie VirtualBoksa, albo VMware Playera, w których można uruchomić systemy 32-bitowe powoduje zjechanie wskaźnika baterii do 4 godzin). Ponadto lepiej chyba mieć 2 rdzenie bez wirtualizacji niż jeden rdzeń z Intel-VT (Intel Core Solo SU3500). Mamy do dyspozycji 500GB dysku twardego, więc zamiast coś wirtualizować, można zainstalować obok.

Laptop nie ma standardowego BIOS-u tylko program EFI Insyde H2O przypominający z wyglądu BIOS Phoenix.


niedziela, października 25, 2009

OpenSUSE 11.2 w VirtualBoksie

Żeby instalacja się udała należy wyedytować konfigurację GRUB-a dodając do parametrów kernela "nopreload".



Kolorystyka jest trochę kontrowersyjna...

Hint na używanie Fedory 12 beta LiveCD: Ctrl+Alt+F2, renice -n 30 `pidof loop3`.

Shaping ruchu sieciowego w OpenSolarisie

Stworzyliśmy wirtualną kartę sieciową do dedykowanej obsługi ruchu SSH. Żeby ssh user@10.0.2.150 zadziałało trzeba jeszcze podnieść eth0 (ifconfig eth0 up).


sobota, października 24, 2009

Intel AC97 w Windows 7

Windows 7 nie ma sterownika do intelowego AC97, ale Realtek ma driver do swojego sprzętu, a wszystkie kodeki AC97 są w zasadzie takie same... Sprawdzone w VirtualBoksie.

wtorek, października 20, 2009

Ultimate HTTP Tunnel

Sprytna aplikacja, którą każdy chciał mieć od dawna. Cytat ze źródeł:
/* Ultimate HTTP Tunnel
*
* c - client
* l - local server
* r - remote server
* d - destination
*
* | |
* | |
* [c] <---> bytes <--> [l] <---> HTTP with XML <--->[r] ---> bytes ---> [d]
* | |
* | |
*
* [c] doesn't have access to [d] port
* [l] have access to [r] port and [r] have access to [d] port
* [l] and [r] create HTTP Tunnel for [c] to access [d]
*/
Można przepuścić przez tunel HTTP dowolny protokół, [l] udaje Internet Explorera, a [r] udaje Apache'a.

sobota, października 17, 2009

Master Data Management

Mamy kilka systemów dziedzinowych, wszystkie zawierają dane tego samego typu biznesowego (np. dotyczące klientów) i chcielibyśmy te dane zsynchronizować. Bierzemy pod uwagę, że obecna firma to efekt paru przejęć, połączeń i innych tego typu zaniechanych okazji do połączenia systemów IT. Bierzemy też pod uwagę, że klientki zmieniają nazwiska, adresy zamieszkania, telefony itd. Robimy jedną bazę, w której będą spójne i aktualne dane i wszystkie nowe aplikacje powinny z niej korzystać.



Sun ma kompleksowe rozwiązanie integrujące się z OpenESB/JCAPS-em. Definiujemy sobie model danych i instalujemy na serwerze aplikacyjnym aplikację MasterIndex1. Wykonujemy na Oracle'u skrypty z katalogu 'Database Scripts'.



Tworzymy na Glassfish-u źródło danych dostępne po JNDI-u jako jdbc/MasterIndex1DataSource.



Dodajemy operatora zarządzania danymi.



Z MDM możemy rozmawiać za pomocą WebService-u.



Zasymulujmy import użytkownika z systemu dziedzinowego A. Dla odmiany używając Eclipse-a a nie NetBeans-a.



Teraz dodajmy w zasadzie tego samego klienta z systemu B. Jeśli pozmieniamy mu trochę dane to dostanie inny Enterprise UID (czyli zostanie potraktowany jako nowy unikalny rekord).



Error Codes