Tuesday, January 21, 2014

strcpy buffer overflow

pstrcpy solves the problem. Maybe strcpy is just too dangerous to use.

Wednesday, January 15, 2014

Disk partitioning in Linux

OK, I'm too late to start doing this.

A disk provides a sector interface. A partition is an abstraction of a disk, simply to restrict accesses to a subset of its sectors. A file system builds on top of a partition, and provides block accesses.

Used gdisk. It reported "Secondary header is placed too early on the disk!". When that problem is automatically fixed.

Don't waste time fixing plus sign in kernel extra version.

Thursday, September 5, 2013

What is a system

When people say "systems research", "I'm a systems guy", and so forth, what do they mean? What other research and other guys are out there? Networks, for example.

What an OS does is to present abstractions to the user. Underneath, it translates user-issued logical operations to physical ones.

Expanding from this thought, can a system be defined as a

Wednesday, February 22, 2012

CPAN, Perl modules, and yum

Many tools out there to learn:

perldoc -q 'How do I install a module from CPAN'

Do a 'yum update' after installing a "repository package" such as CPAN

Wednesday, January 19, 2011

Understanding Linux top output:

wa = wiating for IO
us = userspace
sy = system/kernel
ni = nice processs
id = idle
hi = hardware interrupts
si = software interrupts

Wednesday, September 15, 2010

Overlay network vs. Virtual machine

Both are another layer of abstraction above the native resource. Anyway we can leverage existing studies in VM to overlay network?

Wednesday, July 14, 2010

Installing TraceFS

  1. Need to copy over fs.h and syscalls.h
  2. System crashed when doing "mount -t tracefs"

Thursday, June 17, 2010

Understainding ext2fs library

Useful tool:
  1. debugfs -R show_super_stats
  2. Kernel hlist doesn't really do hash. You still need to write your own hash functions
Part 1: inode.c
  1. get_next_blockgroup() doesn't really do the I/O. It just "gets ready" for reading the next block group.

Monday, June 14, 2010

Different asynchronous I/O methods in Linux

  1. Library (aio_read, aio_write). This requires no kernel support. It just forks out a child process doing I/O. This is the "poor man's" version of asynchronous I/O
  2. Kernel support. This is available in 2.6 kernel. It uses functions like io_setup, io_submit, io_getevents, etc..

Thursday, June 10, 2010

How to use shared libraries in Linux

Note that LD_LIBRARY_PATH is to be set before the program run. In other words, the variable is to be used AT RUN TIME.

Monday, May 17, 2010

Tracing memory usage

We can trace brk() and mmap() calls...

http://www.linuxjournal.com/article/6390

Wednesday, April 28, 2010

Monday, April 26, 2010

How to build FLASH I/O on Jaguar PF

  1. Download the code from http://www.mcs.anl.gov/research/projects/pio-benchmark/
  2. module load hdf5/1.6.8
  3. Modify Makefile.linux as: HDF5path = /sw/xt5/hdf5/1.6.8/cnl2.2_pgi9.0.4/; ZLIBpath = /sw/xt5/szip/2.1/sles10.1_pgi9.0.2/
  4. module load szip
  5. gmake -f Makefile.linux flash_benchmark_io

Wednesday, March 31, 2010

If a C++ program gets a "Killed" error (really not that informative!), one possible reason is memory leak.

Tuesday, March 30, 2010

Small letters in equations

Try to use small letters in equations when writing a paper. Capital ones do not look good.

Monday, February 1, 2010

How to compile and run DTMS

  1. go to Usr/, do a make
  2. edit dtms.inp, change nrtitr and nrtout to small values (20 or 40)
  3. edit dtms.sh, use your own email and account
  4. submit the job

Thursday, January 28, 2010

Picture of twitter being down

http://users.nccs.gov/~zzhang3/twitter_down.jpg

Thursday, January 21, 2010

Compiling and using shared libraries on Juguar

To link to a dynamic library, besides the -L <path_to_lib>and -l<name_of_lib>, also remember to use -Bdynamic! It is because Jaguar is using pgcc for parallel programs.

It took me at least 5 hours to find out. Google rocks...


But Jaguar compute nodes cannot load the dynamic library. So look at this page for linking to static library.

Monday, January 4, 2010

Submitting job to jaguarpf


  1. Use this job script (test.pbs)

  2. #PBS -A STF008
    #PBS -N test
    #PBS -j oe
    #PBS -l walltime=1:00:00,size=12

    cd /lustre/widow1/scratch/zzhang3
    date
    env IOTA_LOGFILE=/lustre/widow1/scratch/zzhang3/output aprun -n 12 ./pi


  3. Submit it using qsub test.pbs

  4. Monitor the job status using qstat -a

Monday, December 21, 2009

Starting to learn strace now

Questions I want to figure out:
  1. Can we just trace certain functions? -- Yes
  2. Why do people still spend a lot of time developing other tracing tools? -- For light weight
  3. strace -o strace_output.txt -e trace=open,close , this allows you to track certain system calls