Pamięć nie jest płaska! Wręcz przeciwnie – dostęp do pamięci operacyjnej jest nierównomierny, a tworzenie wydajnego oprogramowania polega na umiejętnym wykorzystaniu podsystemu pamięci wraz z całą jego wielopoziomową hierarchią.
Prezentacja miała miejsce 29 kwietnia 2015, w ramach odbywających się barcampów organizowanych przez Semihalf.
Wiele portów w jednym kontrolerze Gigabit Ethernet - jak to oprogramować w Linuksie? Powiązanie działania sprzętu ze stosem sieciowym systemu operacyjnego na przykładzie nowego sterownika dodanego do Linuksa v3.17.
DTrace, czyli jak zobaczyć to czego nie widać.Semihalf
"Szanowny Panie, Pana program działa, ale niestety wolno. Czy da się go przyspieszyć?" Który programista nie spotkał się z takim stwierdzeniem niech pierwszy rzuci kamień. W prezentacji poruszamy tematykę analizy wydajności programów za pomocą narzędzia DTrace.
Embedded Debugging, czyli co kryje się w jądrze?Semihalf
Prezentacja barcampu firmy Semihalf z 27.11.2018 r.
Jak zaglądnąć tam gdzie pozornie jest to niewykonalne? Kernel panic? Crash dump? Za pomocą narzędzi software'owych i sprzętowych można rozwiązać i takie problemy.
Zagadnienia:
Wsparcie sprzętowe procesorów do debugowania (stepping, pmu, etc.)
Wsparcie systemu operacyjnego (trap, crash dump)
Narzędzia: LLDB, KDB
Case study: (Linux, FreeBSD, macOS, Windows)
How to run system administrator recruitment process? By creating platform based on open source parts in just 2 nights! I gave this talk in Poland / Kraków OWASP chapter meeting on 17th Octomber 2013 at our local Google for Entrepreneurs site. It's focused on security and also shows how to create recruitment process in CTF / challenge way.
This story covers mostly security details of this whole platform. There's great chance, that I will give another talk about this system but this time focusing on technical details. Stay tuned ;)
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKSemihalf
W prezentacji znajdziesz opis zagadnienia przetwarzania pakietów w wysokowydajnych sieciach światłowodowych. Koncepcja przetwarzania ruchu sieciowego w przestrzeni użytkownika oparta jest na zastosowaniu frameworku DPDK na platformie Linux/x86.
Pamięć nie jest płaska! Wręcz przeciwnie – dostęp do pamięci operacyjnej jest nierównomierny, a tworzenie wydajnego oprogramowania polega na umiejętnym wykorzystaniu podsystemu pamięci wraz z całą jego wielopoziomową hierarchią.
Prezentacja miała miejsce 29 kwietnia 2015, w ramach odbywających się barcampów organizowanych przez Semihalf.
Wiele portów w jednym kontrolerze Gigabit Ethernet - jak to oprogramować w Linuksie? Powiązanie działania sprzętu ze stosem sieciowym systemu operacyjnego na przykładzie nowego sterownika dodanego do Linuksa v3.17.
DTrace, czyli jak zobaczyć to czego nie widać.Semihalf
"Szanowny Panie, Pana program działa, ale niestety wolno. Czy da się go przyspieszyć?" Który programista nie spotkał się z takim stwierdzeniem niech pierwszy rzuci kamień. W prezentacji poruszamy tematykę analizy wydajności programów za pomocą narzędzia DTrace.
Embedded Debugging, czyli co kryje się w jądrze?Semihalf
Prezentacja barcampu firmy Semihalf z 27.11.2018 r.
Jak zaglądnąć tam gdzie pozornie jest to niewykonalne? Kernel panic? Crash dump? Za pomocą narzędzi software'owych i sprzętowych można rozwiązać i takie problemy.
Zagadnienia:
Wsparcie sprzętowe procesorów do debugowania (stepping, pmu, etc.)
Wsparcie systemu operacyjnego (trap, crash dump)
Narzędzia: LLDB, KDB
Case study: (Linux, FreeBSD, macOS, Windows)
How to run system administrator recruitment process? By creating platform based on open source parts in just 2 nights! I gave this talk in Poland / Kraków OWASP chapter meeting on 17th Octomber 2013 at our local Google for Entrepreneurs site. It's focused on security and also shows how to create recruitment process in CTF / challenge way.
This story covers mostly security details of this whole platform. There's great chance, that I will give another talk about this system but this time focusing on technical details. Stay tuned ;)
Złam zasady i stwórz wydajny stos IP przy użyciu DPDKSemihalf
W prezentacji znajdziesz opis zagadnienia przetwarzania pakietów w wysokowydajnych sieciach światłowodowych. Koncepcja przetwarzania ruchu sieciowego w przestrzeni użytkownika oparta jest na zastosowaniu frameworku DPDK na platformie Linux/x86.
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...Future Processing
Krzysztof przybliżył sposób pracy i najczęściej spotykane problemy podczas rozwoju oprogramowania dla systemów wbudowanych. Prelekcja poprowadzona została w oparciu o przykład prostego projektu, zrealizowanego przez FP Instruments, który obejmował dodanie nowej, fizycznej funkcjonalności (czytnik kart) do istniejącego już sprzętu.
Poruszone na wykładzie zagadnienia obejmują: pracę z istniejącym kodem złej jakości, pracę z procesorem o ograniczonej architekturze, problemy z dostosowaniem kodu do wykonanych zmian sprzętowych oraz optymalizację kodu pod względem szybkości wykonywania.
Czym są heterogeniczne systemy mikroprocesorowe?Semihalf
Wyjaśnimy Ci co to jest system heterogoniczny, jak wygląda Linuxowy sterownik do "misc. character device" oraz w jaki sposób Linux może dogadać się z FreeRTOSem.
Talk given to Sacramento Ruby Meetup for the September, 2010 meeting. Examples adapted from the great book Metaprogramming Ruby: Program Like the Ruby Pros by Paolo Perrotta
Prezentacja będzie zawierała luźne anegdoty i doświadczenia z używania kontenerów dockera w produkcji, również do hostowania aplikacji PHP. Sposoby budowania kontenerów, typowe problemy deploymentu.
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...Future Processing
Krzysztof przybliżył sposób pracy i najczęściej spotykane problemy podczas rozwoju oprogramowania dla systemów wbudowanych. Prelekcja poprowadzona została w oparciu o przykład prostego projektu, zrealizowanego przez FP Instruments, który obejmował dodanie nowej, fizycznej funkcjonalności (czytnik kart) do istniejącego już sprzętu.
Poruszone na wykładzie zagadnienia obejmują: pracę z istniejącym kodem złej jakości, pracę z procesorem o ograniczonej architekturze, problemy z dostosowaniem kodu do wykonanych zmian sprzętowych oraz optymalizację kodu pod względem szybkości wykonywania.
Czym są heterogeniczne systemy mikroprocesorowe?Semihalf
Wyjaśnimy Ci co to jest system heterogoniczny, jak wygląda Linuxowy sterownik do "misc. character device" oraz w jaki sposób Linux może dogadać się z FreeRTOSem.
Talk given to Sacramento Ruby Meetup for the September, 2010 meeting. Examples adapted from the great book Metaprogramming Ruby: Program Like the Ruby Pros by Paolo Perrotta
Prezentacja będzie zawierała luźne anegdoty i doświadczenia z używania kontenerów dockera w produkcji, również do hostowania aplikacji PHP. Sposoby budowania kontenerów, typowe problemy deploymentu.
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...Leszek Mi?
Eksfiltracja danych to proces służący do "ukrytego" przesyłania danych pochodzących z przejętych lub zainfekowanych systemów i urządzeń sieciowych. Oprócz samej kradzieży danych celem atakującego jest przede wszystkim minimalizacja wykrycia takich działań. Podczas prelekcji omówione zostaną metody i techniki eksfiltracyjne bazujące na wykorzystaniu najpopularniejszych protokołów i usług sieciowych: DNS, ICMP, TCP, UDP, SSH, HTTP/HTTPS, a także w oparciu o popularne serwisy w chmurze, np. Google Docs, Slack czy Twitter. Krótkie wprowadzenie teoretyczne poparte zostanie licznymi, praktycznymi pokazami na żywo. Całość prezentacji ma na celu zwrócenie uwagi na jakże istotną wielopoziomową analizę ruchu sieciowego pod kątem anomalii, odejść od normy czy "egzotycznej" charakterystyki i pochodzenia będącej jednocześnie jednym z podstawowych elementów "Threat Huntingu" i procesu aktywnej ochrony.
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PROIDEA
W trakcie wykładu poruszony zostanie temat użycia platform serwerowych na potrzeby wydajnego routingu pakietów. Mocne i słabe strony zastosowania architektury jedno- czy wieloprocesorowej pod kątem konfiguracji sieciowej, jej wypływ na wydajność oraz skalowalność rozwiązania.
Prezentacja dotycząca wydajnego przetwarzania ruchu IP na PC wygłoszona podczas IT Conference na WAT (http://itacademicday.azurewebsites.net/), listopad 2015.
(Polish only) Talk regarding effective IP traffic processing on x86 platforms, given at IT Academic Day / Military University of Technology in Warsaw, November 2015.
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...PROIDEA
Działania symulujące rzeczywiste zachowanie cyberprzestępców mają na celu lepsze zrozumienie aktualnego stanu bezpieczeństwa sieci, walidację środowiska SOC i rozwiązań analitycznych typu SIEM, priorytezację i usprawnienie reakcji na incydenty oraz pozwalają lepiej przygotować się do ochrony przed niekontrolowanymi wyciekami danych. Podczas prelekcji przedstawionych zostanie kilka przykładów symulacji podejrzanych zdarzeń systemowych oraz anomalii w ruchu sieciowym.
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.comLeszek Mi?
W dobie rozwijającego się w szybkim tempie rynku sprzedaży exploitów typu 0-day i wszechobecnych backdoorów w tzw. „drogich zabawkach”, coraz trudniejszym staje się utworzenie i utrzymanie bezpiecznej infrastruktury krytycznej. Aktualizacje oprogramowania jak i tzw. „old-schoolowe” triki utwardzające systemy i urządzenia sieciowe nadal uznawane są za poprawne, ale zdecydowanie nie są wystarczające. Potrzebujemy mechanizmów profilowania zachowania zarówno sieci, systemów jak i administratorów i użytkowników końcowych. Potrzebujemy więcej dedykowanych, „szytych na miarę” defensywnych konfiguracji oraz przede wszystkim izolacji na poszczególnych warstwach infrastruktury. Jednocześnie zdobywanie przez kadrę techniczną aktualnej, niepowiązanej z żadnym vendorem wiedzy z zakresu „offensive vs defensive” staje się kluczową kwestią w rozwoju technologicznym zespołów IT/ITSec.
Podczas prezentacji, na bazie wieloletniej obserwacji „podwórka IT Security” postaram się przedstawić możliwości, jakie drzemią w rozwiniętych rozwiązaniach Open Source dedykowanych utwardzaniu, profilowaniu i monitorowaniu systemów i sieci. Na bazie rzeczywistych przypadków omówione zostaną wybrane sposoby ochrony i wykrywania zdarzeń wykorzystując:
– izolację (Apparmor, SELinux, Docker/LXC, chroot/jail) celem utrudnienia eskalacji uprawnień
– filtrowanie i profilowanie (seccomp, systemtap, sysdig, GRR, Volatility, modsecurity/naxsi)
– aktywną i pasywną analizę ruchu sieciowego celem wczesnego wykrywania zagrożeń
– hardening jądra systemowego i przestrzeni użytkownika
– centralne miejsce składowania logów i korelacji zdarzeń (Elastic, Logstash, Kibana)
Prezentacja jest swego rodzaju drogowskazem do zbudowania własnej „fortecy” w sposób odmienny od tego, jaki prezentują liderzy komercyjnego rynku. Zastrzyk merytoryki gwarantowany!
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...PROIDEA
Krzysztof Suszka
Language: Polish
Duża dostępność chmur spowodowała, że tworzenie olbrzymich, skalowalnych systemów stało się dostępne dla każdego. Jednak sama chmura nie rozwiązuje wszystkich problemów. Nadal trzeba włożyć sporo wysiłku w taką konstrukcję systemu, która pozwoli z tej chmury efektywnie korzystać. Orleans jest eksperymentalną platformą, która próbuje odnieść się do tego problemu, zrzucając z programisty obowiązek myślenia o fizycznej dystrybucji elementów aplikacji. Orleans dostarcza API zbudowane w oparciu o sprawdzony Actor Model. W czasie prelekcji przedstawione zostaną podstawowe mechanizmy działania tej platformy oraz prosty przykład pokazujący fragment jej możliwości.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.Semihalf
Prezentacja barcampu firmy Semihalf.
Opowiadamy jak działa system ARM CoreSight. Przedstawiamy jego komponenty oraz zasady współdziałania i konfigurowania. Pokazujemy sposób integracji systemu CoreSight z Linuxowym narzędziem Perf oraz przykłady jego użycia podczas profilowania kodu.
Hierarchia pamięci w systemach komputerowych.Semihalf
Pamięć nie jest płaska! Wręcz przeciwnie – dostęp do pamięci operacyjnej jest nierównomierny, a tworzenie wydajnego oprogramowania polega na umiejętnym wykorzystaniu podsystemu pamięci wraz z całą jego wielopoziomową hierarchią.
Z prezentacji dowiesz się:
Jaki wpływ na wydajność programów ma pamięć operacyjna?
Jak przyspieszyć działanie programów?
Kiedy korzystać z pamięci RAM lub Cache?
5. Jak zbadać ...
Przykład
Języki Java, PHP
/usr/bin/*
Pliki wykonywalne
Biblioteki /usr/lib/*
Syscall man -s2
ZFS,TCP
Kernel
disk data
Sprzęt controller
6. Jak zbadać ...
Przykład Kiedyś
Języki Java, PHP debuggers
Pliki wykonywalne /usr/bin/* truss -ua.out
/usr/lib/*
apptrace,
Biblioteki sotruss
Syscall man -s2 truss
Kernel ZFS,TCP mdb
disk data kstat
Sprzęt controller
7. Jak zbadać ...
Przykład Kiedyś DTrace
Języki Java, PHP debuggers Tak
Pliki wykonywalne /usr/bin/* truss -ua.out Tak
apptrace,
Biblioteki /usr/lib/*
sotruss Tak
Syscall man -s2 truss Tak
Kernel ZFS,TCP mdb Tak
Sprzęt
disk data kstat Nie
controller (Pośrednio, tak)
8. DTrace
Dynamiczna instrumentacja
● Nieaktywne sondy nie obniżają wydajności
Ujednolicona instrumentacja
● Śledzenie jądra i aplikacja
● Śledzenie przejścia między warstwami
Sondy z predykatami i akcjami
Język „D” wysokiego poziomu
● Podobny do awk, C
Agregacja danych
9. Blok instrukcji
Sonda
● Dostawca – moduł DTrace jądra
● Moduł – nazwa modułu jądra lub biblioteki
● Funkcja – nazwa funkcji zawierającej sonde
● Nazwa – nazwa identyfikująca sonde
Predykat – rodzaj wyrażenia warunkowego
Akcja – zgrupowane intrukcje języka „D”
syscall::openat:entry
/ pid == 123 /
{ trace(1); }
11. Dostawcy
pid - probes for tracing any function in a user process
● entry : arg0, arg1, … are the values of the arguments
● return: arg1 holds the return value
fbt -probes associated with most functions in the kernel
● entry : arg0,.. are the values of the arguments
● return: arg1 holds the return value
fbt:::{
printf(“%s:%s:%sn”,probemod,probefunc,probename);
}
12. Dostawcy
syscall - probes associated with system call in the system
● entry : arg0 .. argn are the arguments to the system call.
● return: both arg0 and arg1 contain the return value
● A non-zero value in the errno indicates system call failure.
syscall::open:entry
{ printf("%s %s", execname, copyinstr(arg0)); }
io - probes related to disk input and output
● probes: start, done, wait-start, wait-done
● arg[0]: bufinfo_t *, arg[1]: devinfo_t *, arg[2]: fileinfo_t *
io:::start { /* DEVICE, FILE, RW */
printf("%10s %58s %2sn",
args[1]->dev_statname,args[2]->fi_pathname,
args[0]->b_flags & B_READ ? "R" : "W"); }
13. Dostawcy
sched - probes related to CPU scheduling
● on-cpu, off-cpu, enqueue,..
proc - probes pertaining to the following activities:
● process creation and termination
● LWP creation and termination
proc:::exec-success
● executing new program images {trace(curpsinfo->pr_psargs);}
● sending and handling signals
● Ex. create, exec, exit, signal-send, signal-handle
profile - probes associated with a time-based interrupt firing
every fixed, specified time interval
14. Dostawcy
sysinfo / vminfo
● kernel statistics classified by the name sys / vm
mib - counters in the Solaris management information bases
ip - probes for tracing both IPv4 and IPv6 protocols.
lockstat
● allow to understand virtually any aspect of locking behavior
...
16. When to use DTrace
System monitoring
Probing kernel subsystems
● file systems
● networks
● zones
● etc.
Collecting information from whole system
● DExplorer tool
Tuning system and applications
17. When to use DTrace
Web-development
Server-side Tools
● Ruby ● Apache
● Java ● Glassfish
● PHP ● MySQL
● Groovy ● PostgreSQL
● Perl
● Python
Client-side
● Java-script
18. When to use DTrace
Software development
Debugging
Profiling
● Memory leaks
● Lost CPU cycles
● Function calls
● etc.
19. Złota myśl
“It needs to borrow your brain to do the thinking”
Brendan Gregg
http://blogs.oracle.com/brendan/entry/unusual_disk_latency
20. Więcej informacji
Solaris Dynamic Tracing Guide
● http://download.oracle.com/docs/cd/E19082-01/819-3620/
Wiki
● http://wikis.sun.com/display/DTrace/Documentation
Blog twórców
● http://dtrace.org/blogs/
DTrace Tools
● http://www.brendangregg.com/dtrace.html