Friday, March 13, 2020

Memory Training, Testing and Margining

RAM

Quick ref : https://www.makeuseof.com/tag/quick-dirty-guide-ram-need-know/

RAM usually means SDRAM (Synchronous Dynamic RAM)

Soldered RAM on thin computers sacrifices upgradability and repairability

Form Factors of RAM :

  1. DIMM ( Dual In-line Memory Module)
  2. SO-DIMM (Small Outline DIMM) 

What does DDR Mean ?

RAM operates using DDR (Double Data Rate). DDR RAM means 2 transfers happen per clock cycle. Newer types of RAM are updated versions of the same technology, hence why RAM module carry the label of DDR, DDR2, DDR3 and so on.
All RAM generations are exactly the same physical size and shape, they still aren't compatible.  


DDR2

oldest kind of RAM. has 240pins(200 for SO-DIMM). Obsolete

DDR3

DDR3 RAM covers a huge range of CPU generations, stretching from Intel's LGA1366 socket through to LGA1151, as well as AMD's AM3/AM3+ and FM1/2/2+.
Has same no. of pins as DDR2. Runs on lower voltage and higher timings so they aren't compatible with DDR2. DDR3 SO-DIMM have 204pins.

DDR4

high price for long time. As price decreased, with latest AMD, and intel CPU generations it became popular. Which means, with upgraded CPU, you need a new MB and new RAM too.
DDR4 drops voltage even further, from 1.5V to 1.2V, while increasing the number of pins to 288.

DDR5

to hit the market yet.
288-pin design, RAM voltage drop to 1.1V.  DDR5 performance is expected to double the fastes standard of the previous DDR4 generation.
SK Hynix, has DDR5-6400 RAM - fastest possible module allowed under DDR5.

RAM Jargon: Speed, Latency, Timing and More

Clock Speed, Transfers and Bandwidth

ex DDR-1600, PC3-12800 ( Both tells generation and its transfer speed)
DDR2 ~ PC2, DDR3 ~ PC3, DDR4 ~ PC4
1600 → Megatransfers per sec (MT/s)
12800 → represents theoretical bandwidth in megabytes per sec. Ex PC3-12800 operates at 12,800 MB/s.
It is possible to overclock RAM, just like can be done to CPU or Graphics card. Overclocking increases RAM's bandwidth.
Q: Can we mix RAM modules with different clock speeds ?
A: Yes, but they'll all run at the clock speed of the slowest module.  In theory, you can mix RAM brands, but it isn't advisable. – may get into blue screen of death or random crashes when mixing either speed or brands :- D

Timing and Latency

RAM timing is a measurement of the performance of the RAM module in nanoseconds. The lower the numbers, the quicker RAM reacts to requests.
Represented as 9-10-9-27. First no. is CAS latency - which refers to the no, of clock cycles it takes for data requested by the memory controller to become available to a data pin.  Latency → DDR2 < DDR3 < DDR4 and still the speed is in order of DDR2 > DDR3 > DDR4.
For most people, capacity trumps speed and latency everytime. 16GB of DDR4-1600 RAM is better than 8GB DDR4-2400 RAM. In most cases, timing and latency are last point of consideration.

ECC

Error Correcting Code(ECC) RAM is a special kind of memory module that can detect and correct data corruption. ECC RAM is used in servers with mission-critical data. Consumer Motherboards and processors don't usually support ECC-compatible RAM.

Friday, May 03, 2019

rsync - linux utility

Rsync



to help copy from src to dest - remote & local servers.
Better than scp as it copies or syncs the differences in the folders/files only.

https://www.tecmint.com/rsync-local-remote-file-synchronization-commands/

rsync also keeps the file metadata like date created/modified, user permissions etc.

Friday, April 12, 2019

Shell setup

iterm2 +mosh --> ssh server --> tmux

https://thoughtbot.com/blog/a-tmux-crash-course

bashrc :

cat ~/.bashrc
# .bashrc
# bashrc is for aliases, functions, and shell configuration intended for use in
# interactive shells.  However, in some circumstances, bash sources bashrc even
# in non-interactive shells (e.g., when using scp), so it is standard practice
# to check for interactivity at the top of .bashrc and return immediately if
# the shell is not interactive.  The following line does that; don't remove it!
[[ $- != *i* ]] && return

# Load CentOS stuff and stuff (don't remove these lines).
source /etc/bashrc
source

# Keep oodles of command history
HISTFILESIZE=-1
HISTSIZE=1000000
shopt -s histappend

# Set up personal aliases, functions, etc.
# ...(put your own stuff here!)...


source $ADMIN_SCRIPTS/scm-prompt
export PS1=$PS1'$( [ -n "$TMUX" ] && tmux setenv -g TMUX_LOC_$(tmux display -p "#D" | tr -d %) "$(_dotfiles_scm_info) ")'
TMUX_OPTIONS="-CC"

if [[ ! $TMUX && -t 0 && $TERM_PROGRAM != nuclide ]]; then
    tmux $TMUX_OPTIONS new-session -As auto
fi

.bash_profile


# Source bashrc to pull in configuration for interactive shell use (the bashrc
# will just return if the shell is not interactive).
if [[ -f ~/.bashrc ]]; then
  source ~/.bashrc
fi

# Export environment variables, start background programs, etc.
export EDITOR=vi
export PATH=$PATH:$HOME/bin

 .tmux.conf

set -g default-command "${SHELL}"
set -g history-limit 500000
set -g status-right "#{s/.//:host} • %Y-%m-%d %H:%M"
set -s default-terminal "screen-256color"
set -s escape-time 0
set -g mouse on
set -g status-style "bg=colour17,fg=colour27"
set -g status-interval 1
set -g status-left-length 30
set -g status-left '#(~/bin/display_tmux_loc.sh)'

Terminologies to read about

BTRFS :

https://en.wikipedia.org/wiki/Btrfs
file system based on the Copy-on-Write (COW) principle.
Btrfs is intended to address the lack of pooling, snapshots, checksums and integral multi-device spanning in Linux file systems.
goal was " to let Linux scale for the storage that will be available. Scaling is not just about addressing the storage but also means being able to administer and to manage it with a clean interface that lets people see what's being used and makes it more reliable."

Tupperware :

http://www.adaltas.com/en/2017/11/03/lightweight-containerization-with-tupperware/

Tupperware Agents :
heart of Tupperware. They run on FB's hosts and manage every layer of the running application. They are composed of :
Task Manager
Package Manager
Volume Manager
Resource Manager
Scheduler heartbeat

Launching Containers:
-every container is launched the same way. At the start, they contain a btrfs image. They use ReadWrite Snapshots on a ReadOnly base. Everyone of the FB's packages and other common tools are pre-installed. They allow systemd-init using spawn. Containers also use croups v2.

Image Layering:
Every image on Tupperware is layered as follows:
- Running task
- Application image  - contains instructions required by the running task
- FB image  - like, custom repros, internal program & modules, network customizations
- BaseOS image

Why BTRFS?
Provides the following features :
- Copy on write
- Subvolumes
     - container can mount volumes
     - easy to manage
- Snapshots (RO and RW)
     - it allows going back in time easily
- Binary diffs
     - lower disk space usage
    - lower disk usage IO
     - improved disk data caching
    - independent version layers
- Quotas
    - use full to prevent container to take all disk space over other containers
- Cgroups IO Control
    - provides resource isolation
    - disk isolation
    - memory isolation
   - CPU isolation

Building images:
Images are build using Buick build. provides following features :
      - declarative image building
      - fast parallel builds
      - reproducible builds
      - incremental builds
      - separation of build and runtime
     - fully self contained
     - provides true FS isolation
     - testable

Systemd init:
systemd is container aware and allows SSH connection inside the container, which is useful for debugging or executing specific commands. It uses systemd-nspawn feature and also enables logging outside the container. Finally (but not advised), it can run containers at build time. (dockers doesn't allow it)


FIO (Flexible I/O )

https://github.com/axboe/fio


Thursday, November 01, 2018

Looking forward!!

My profile is so diversified, that I don't know where will I fit anymore. I have done protocol testing in past, setting up test beds, using the AX4000 to configure bits/bytes of packets/frames, being able to automate that, remembered each and every RFCs I worked on and what not. Later I moved away from protocol testing and went to do some hands-on work for the Hardware/firmware testing. Testing out the LEDs/SFPs/PowerSupply etc was a new learning and experience for me. Knowing what cards went in the hardware was interesting, Mezanine cards/SSL cards/FIPs etc. Working through the Platform install & validations, FAVs, Out-of-box testing and RMA troubleshooting - I did that testing for 7long years. But I don't remember the network basics anymore. :(
Now for my next job hunt, I don't know where I fit anymore. Its hard to find a network tester job, and I don't see many Platform test requirements. I want to go to SDET role, but lack the framework development experience!!!
Tough time again! Back to books, back to learning the basics and looking forward to yet another new domain to explore.

So what am I doing currently :
1. solving hackerrank problems
2. doing the Algorithm Analysis on Coursera from Stanford.

Will that help me ???? 

Thursday, September 27, 2018

An old, very inspirational letter I revisited recently :

Dear Wiproite,

My own successes and setbacks along the way have taught me some lessons. I wish to share them with you and hope you will find them useful.

Lesson #1: Be careful to ask what you want. You may get it. 

What this means is that do not ask too little either of yourself or the others around you. What you ask is what you get. When I look back at the time when I joined Wipro, I was 21. If you ask me whether I thought that Wipro would grow so by someday, the honest answer is that I did not. But neither did I think it would not. We constantly stretched ourselves to higher and higher targets. Sometimes, it seemed possible, sometimes fanciful and sometimes plain insane. But we never stopped raising limits. And we got a lot more than what we bargained for.

Lesson # 2: Respond, don’t react

Always be aware of your emotions and learn to manage them. There is a huge difference between people who react impulsively and those who can disengage themselves and then respond at will. By choosing to respond differently, we can prevent another person from controlling our behaviour. I remember a small story that illustrates this well. There was once a newspaper vendor who had a rude Customer. Every morning, the Customer would walk by, refuse to return the greeting, grab the paper off the shelf and throw the money at the vendor. The vendor would pick up the money, smile politely and say, “Thank you, Sir.” One day, the vendor’s assistant asked him, “Why are you always so polite with him when he is so rude to you? Why don’t you throw the newspaper at him when he comes back tomorrow?” The vendor smiled and replied, “He can’t help being rude and I can’t help being polite. Why should I let his rude behaviour dictate mine?

Lesson # 3: Intuitions are important for making decisions

It is important to realize that our intuition is a very important part of decision making. Many things are recorded by our subconscious. Use both sides of the brain. Even that is not enough. Some decisions need the use of the heart as well. When you use your mind and heart together, you may get a completely new and creative answer.

Lesson # 4: Learn to work in teams


The challenges ahead are so complex that no individual will be able to face them alone. While most of our education is focused in individual strength, teaming with others is equally important. You cannot fire a missile from a canoe. Unless you build a strong network of people with complimentary skills, you will be restricted by your own limitations.

Globalisation has brought people of different origins, different upbringing and different cultures together.  Ability to become an integral part of a cross-cultural team will be a must for your success.

Lesson #5: Never lose your zest and curiosity


All the available knowledge in the world is accelerating at a phenomenal rate. The whole world's codified knowledge base (all documented information in library books and electronic files) doubled every 30 years in the early 20th century. By the 1970s, the world's knowledge base doubled every seven years. Information researchers predict that by the year 2010, the world's codified knowledge will double every 11 hours. Remaining on top of what you need to know will become one of the greatest challenges for you.

The natural zest and curiosity for learning is one of the greatest drivers for keeping updated on knowledge. A child’s curiosity is insatiable because every new object is a thing of wonder and mystery. The same zest is needed to keep learning new things. I personally spend at least 10 hours every week on reading. If I do not do that, I will find myself quickly outdated.

Lesson # 6:  Put yourself first

This does not mean being selfish. Nor does it mean that you must become so full of yourself that that you become vain or arrogant. It means developing your self confidence. It means, developing an inner faith in yourself that is not shaken by external events. It requires perseverance. It shows up in the ability to rebound from a setback with double enthusiasm and energy. I came across a recent Harvard Business review which describes this very effectively :

“No one can truly define success and failure for us- only we can define that for ourselves. No one can take away our dignity unless we surrender it. No one can take away our hope and pride unless we relinquish them. No one can steal our creativity, imagination and skills unless we stop thinking. No one can stop us from rebounding unless we give up.”

And there is no way we can take care of others, unless we take care of ourselves.

Lesson # 7:  Have a broader social vision


While there is every reason to be excited about the future, we must not forget that we will face many challenges as well. By 2015, we will have 829 million strong workforce. That will make India home to 18% of global working-age population. The key challenge is to transform that into a globally competitive work-force.

This will not be an easy task. Despite all the rapid economic expansion seen in recent years, job growth in India still trails the rise in working-age population. It is important that gains are spread across this spectrum, so that the divide between the employed and the under-employed, is minimised. Education is a crucial enabler that can make this growth as equitable as possible. 

 Lesson # 8: Play to win 

Playing to win is not the same as playing dirty. It is not about winning all the time or winning at any cost. Playing to win is having the intensity to stretch to the maximum and bringing our best foot forward. Winning means focusing on the game. The score board tells you where you are going, but don’t concentrate too much on it. If you can focus on the ball, the scores will move by themselves.  I recently came across this story that I thought I would share with you

A group of alumni, highly established in their careers, got together to visit their old university professor.  Conversation soon turned into complaints about stress in work and life.  Offering his guests coffee, the professor went into the kitchen. He returned with a large pot of coffee and an assortment of cups: porcelain, plastic, glass, crystal- some plain looking, some expensive, some exquisite – and asked them to help themselves to coffee. 

When all the students had a cup of coffee in hand, the professor said: "If you noticed, all the nice looking expensive cups were taken up, leaving behind the plain and cheap ones. While it is normal for you to want only the best for yourselves, you were more concerned about comparing your cups but what you really wanted was coffee.  Yet you spent all your time eyeing each other's cups. 

Now if life is coffee, then the jobs, money and position in society are the cups. They are just tools to contain Life, but cannot really change the quality of Life. Sometimes, by over concentrating on the cup, we fail to enjoy the coffee." 

I wish you all every success in your career and your life.


Azim Premji

Saturday, August 25, 2018

Python and what not



Listing down what is new in current technology :

Python :

pythontutor.com : for visualizing the data assignments and step by step debug

pylint : Pylint is a source code, bug and quality checker for the Python programming language. It follows the style recommended by PEP 8, the Python style guide

Container:

Containers are a solution to the problem of how to get software to run reliably when moved from one computing environment to another.
Types of containers :

Container Orchestration:

https://www.sumologic.com/blog/devops/kubernetes-vs-docker/
https://blog.newrelic.com/engineering/container-orchestration-explained/

Kubernetes :Kubernetes, pronounced "Kū-bər-NəT-ēz" is an open-source container-orchestration system for automating deployment, scaling and management of containerized applications.

Docker Swarm :Docker Swarm is a clustering and scheduling tool for Docker containers. With Swarm, IT administrators and developers can establish and manage a cluster of Docker nodes as a single virtual system.

What is Anaconda :

Anaconda is a free and open source distribution of the Python and R programming languages for data science and machine learning related applications, that aims to simplify package management and deployment.

The following applications are available by default in Navigator:
JupyterLab
Jupyter Notebook
QtConsole
Spyder
Glueviz
Orange
Rstudio
Visual Studio Code





Wednesday, December 10, 2014

ASIC vs FPGA

This came up during a conversation with a friend in the common get-together, and I was surprised to know I knew nothing about ASIC while I knew basics of FPGA. They basically serves the same purpose but have different implications on cost on development/testing and performance. Just found this nice blog about the difference.

http://asic-soc.blogspot.com/2007/11/what-is-difference-between-fpga-and_06.html