30 septembrie 2016

Linux: mount USB

> sudo fdisk -l
> sudo mkdir /media/usb
> sudo mount /dev/sdb1 /media/usb

> sudo umount /media/usb

23 septembrie 2016

Remember GIT

git config --global user.name "name"
git config --global user.email "email@intel.com"
git config --global http.proxy proxyAddress  # or "" to override computer proxies

git init
git clone <repo> <directory> # it will stay fixed on this repo
git remote add origin <server> # to make another repo

git add *
git commit -m "message"
git push origin master

git pull # update local repo to the newest commit
git remote -v # all the repos

Also check this

21 septembrie 2016

Valgrind (notite)

tools available: memcheck (for memory leaks), cachegrind (detects cache misses), massif (heap and stack profiling), helgrind, callgrind, DRD
- cannot be attached to a already running process (Valgrind wants to have full control from the very start)
- results are given for the whole process but you can find the errors coming from a specific shared object
> valgrind --tool=memcheck --leak-check=yes --track-children=yes --log-file=log.txt java Example
Types of errors (counting the occurrences):
  • illegal read/write
    cat log.txt | grep "Invalid" | wc -l
  • use of uninitialised values
    cat log.txt | grep "uninitialised" | wc -l 
Results at the end of log file:
  • definitely lost = program is leaking memory
  • indirectly = leaking memory in a pointer-based structure
  • possibly = leaking memory unless pointers do something awesome
  • still rechable = it just didn't free some memory it could have freed
  • suppressed = to be ignored
> valgrind --tool=cachegrind --log-file=log.txt java -Djava.library.path=/home/gtache/workspace/MKL/lib Example
Results in the log file, miss rates for L1, L2, L3. 

valgrind --tool=massif --stacks=yes --time-unit=B --log-file=log.txt java --massif-out-file=massif.out.txt -Djava.library.path=/home/gtache/workspace/MKL/lib Example
Results in massif.out
> vim massif.out  or  ms_print massif.out # snapshots of total memory consumption for heap/stack at different moments of time
  • mem_heap_B = the number of useful heap bytes allocated at that point
  • mem_heap_extra_B = the number of bytes allocated in the excess of what the program asked for (might be associated with alignment)
  • mem_stacks_B = size of the stack
Sometimes it gives the detailed heap tree for a snapshot.
massif_visualizer massif.out # graphical output

Linux: send process to run in background

[ctr+z] to pause it
> bg # to send it in the background