Thursday, March 24, 2011

Recipes

Meetha pooda or sweet pancake is made in many parts of India including Punjab and Rajasthan. In Punjab, it is served as breakfast. You can also make it as an anytime sweet.
Recipe of meetha pooda (chilla)
1 cup whole wheat flour (atta)
1/2 cup sugar
1/2 tsp saunf (fennel) powder
2-3 green cardamom (hari elaichi) - crushed
Ghee (clarified butter) or oil to shallow fry
1. In a bowl, mix all the ingredients except oil or ghee. Add water slowly mixing with other hand. Add enough water to make lump free batter of consistency thicker than that of pakoda (fritters). Beat well.
2. Heat a non- stick tava (griddle). Grease it and turn the heat to low. Pour a ladlefull or 2 tablespoon batter in the center of the tava.
3. Spread it gently in the outward circular motion like you would do for a chilla or an omellete. Spread it with the back of a ladle (karchhi). Turn the heat to medium.
4. After 2 minutes, drizzle some oil or ghee on the pooda. Remove it with the help of a wide, thin spatula and turn over.
5. Cook the other side also for 2 minutes and remove from the tava. Your meetha pooda is ready. Similarly make other poodas from rest of the batter.
Always spread the pooda on low heat and cook it on medium heat.
If the first pooda sticks to the tava, don’t get disheartened. It usually happens with the first puda. As the tava get seasoned, rest of the meetha puda will turn out fine.

Out Of Memory Error

Execute prctl $$ command to  use the current shell process to determine resource limits


A threshold value on a resource control constitutes a point at which local actions can be triggered or global actions, such as logging, can occur.
Each threshold value on a resource control must be associated with a privilege level. The privilege level must be one of the following three types:
basic
Can be modified by the owner of the calling process.
privileged
Can be modified by the current process (requiring sys_resource privilege) or by prctl(1) (requiring proc_owner privilege).
system
Fixed for the duration of the operating system instance.
A resource control is guaranteed to have one system value, which is defined by the system, or resource provider. The system value represents how much of the resource the current implementation of the operating system is capable of providing.
Any number of privileged values can be defined, and only one basic value is allowed. Operations that are performed without specifying a privilege value are assigned a basic privilege by default.

If you see "Out of memory errors" , you may want to enable logging of resource control limit threshold.
By default, Solaris 10  does not  log resource limit threshold notifications. You can see whether they are enabled or not by using the “rctladm” command:

To turn on the syslog for "project.max-shm-memory", issue the following:
rctladm -e syslog project.max-shm-memory



To set the process.max-address.space to 20GB, add the following line to /etc/project
         

user.ben:12345::::process.max-address.space=(privileged,20000000000,deny)

An example of /etc/project:
user.oracle:100::::process.max-address-space=(privileged,40240000000,deny);proce
ss.max-data-size=(priv,10737418240,deny);process.max-sem-nsems=(priv,8192,deny);
process.max-stack-size=(priv,10737418240,deny);project.max-file-descriptor=(priv
,65536,deny);project.max-sem-ids=(priv,100,deny);project.max-shm-ids=(priv,8192,
deny);project.max-shm-memory=(privileged,2199023255552,deny)




This setting however only takes effect for new processes and not for existing process.

ie prctl $$ (will continue to show old value for process.max-address-space)
'
$ su oracle -c 'sh -c "prctl $$"' (will show the new value as you are starting a new shell)
or ...su oracle -c 'sh -c "xterm"'

Mapping disk instance name with physical name

Say you need to find the instance name for the following disks:
'/dev/rdsk/c6t20030003BACCC8FAd0s6',
'/dev/rdsk/c6t20030003BACCC8FAd1s6',
'/dev/rdsk/c6t20030003BACCC902d0s6',
'/dev/rdsk/c6t20030003BACCC902d1s6



Look for 902 (0 and 1) in /etc/path_to_inst file:
"/pci@0/pci@0/pci@8/pci@0/pci@a/SUNW,qlc@0,1/fp@0,0/ssd@w20030003baccc902,1" 3 "ssd"
"/pci@0/pci@0/pci@8/pci@0/pci@a/SUNW,qlc@0,1/fp@0,0/ssd@w20030003baccc902,0" 4 "ssd"

Look for 8FA (0 and 1 ) in /etc/path_to_inst file:
"/pci@0/pci@0/pci@8/pci@0/pci@a/SUNW,qlc@0,1/fp@0,0/ssd@w20030003baccc8fa,1" 72 "ssd"
"/pci@0/pci@0/pci@8/pci@0/pci@a/SUNW,qlc@0,1/fp@0,0/ssd@w20030003baccc8fa,0" 7 "ssd"


The mapping is as under:
'/dev/rdsk/c6t20030003BACCC8FAd0s6  : ssd7
'/dev/rdsk/c6t20030003BACCC8FAd1s6:ssd72
/dev/rdsk/c6t20030003BACCC902d0s6:ssd4
/dev/rdsk/c6t20030003BACCC902d1s6:ssd3

Tuesday, March 8, 2011

Solaris Containers

  • How to create Zones
  • Create a root directory for zones with rwx permission for user.
    • mkdir /zones1
    • chmod 700 /zones1
  • Create a zone configuration file as under:
    • create
    • set zonepath=/zones1
    • set autoboot=true
    • Add network (exclusive IP or default shared IP):
      • Setting exclusive IP
    If you are setting up exclusive IP: (do not set address attribute for exclusive IP)
      set ip-type=exclusive
      add net
      set physical=e1000g2
      end

      Additional info about exclsive IP setup:
      http://download.oracle.com/docs/cd/E19082-01/819-6990/gicom/index.html

        • Setting default shared IP
      If you are setting default shared IPadd net
      set physical=e1000g2
      set address=<ip address of container>
      end

      • Add Raw devices
      To add raw devices to the containers configuration

      add device
      set match=/dev/rdsk/c6t20030003BACCC902*
      end
      add device
      set match=/dev/rdsk/c6t20030003BACCC8FA*
      end

      On Solaris 11:
      zonecfg:rac4Zone> add device
      zonecfg:rac4Zone:device> set match=/dev/rdsk/c1t0d0s0
      zonecfg:rac4Zone:device> set allow-partition=true
      zonecfg:rac4Zone:device> set allow-raw-io=true
      zonecfg:rac4Zone:device> end


      • Add FS
      To add fs refer to
      • http://docs.oracle.com/cd/E23824_01/html/821-1460/z.admin.task-11.html

      To mount a global directory as lofs to container

      zonecfg -z zones1
      add fs
      set dir=/oracle11gR2
      set special=/oracle11gR2
      set type=lofs
      set options=nodevices
      end

      • Set shared memory :
        global# zonecfg -z myzone
        zonecfg:myzone> set max-shm-memory=50G
        • Add dedicated CPU 
          Adding dedicated -cpu is a simpler form of creating a pool and attaching it to the container. Add dedicated-cpu command creates a temporary pool and assigns it to the container

          add dedicated-cpu
          set ncpus=32
          end

          • Remove dedicated CPU

          To remove the dedicated-cpu, issue the following command
          remove dedicated-cpu

          • Add resource pool
            • set pool=rac1pool
          • Remove pool
            • On Solaris 11
              •  clear pool
            • On Solaris 10 Update 3 and below
              • set pool=""

          • Steps to create and configure a container

          1. Invoke zonecfg command to configure the zone
            1. zonecfg -z zones1 -f test.cfg
          2.  Install the configured zone
            1. zoneadm -z zones1 install
          3.  Use the list subcommand of zoneadm to list the installed zones and verify their status. The status of the zone is "Installed"
            1. zoneadm list -iv
          4. Boot the zone
            1. zoneadm -z zones1 boot
          5.  Verify that status of the zone is "running"
            1. zoneadm list -v
          6.  Log in to Zone console to perform the internal zone configuration
            1. zlogin -C zone1
          7.  Optionally edit /etc/sysidcfg file to perfom the inital zone configuration
            1. Go to /etc/ directory of the local zone
              1. cd /export/home/zones/root/etc
            2. Create sysidcfg file in this directory

          • Steps to delete a container
            • zoneadm -z myzone halt
            • zoneadm -z myzone uninstall
            • zonecfg -z myzone delete -F

          • List a container and info about it

          • List all zones from global zone
            • zoneadm list -v
          • Login to local zone from global zone:
            • zlogin <zonename>
          • In the zone , issue zonename to print its name
          • Get info about the zone
            • zonecfg -z myzone info
          • To verify if /dev/rdsk/c6 is accessible in local container
            • ls /my_zone/root/dev/rdsk/.....

          • Initial zone configuration

          • Hostname and ip address: 
            • The hostname can be resolved through DNS or NIS
              • Verify if it is resolved through DNS
                • nslookup isve-111-212 
              • Verify if it resolves through NIS
                • ypcat hosts | grep isve-111-212
              • If hostname is resolved through dns /etc/nsswitch.conf should have the following 
                • ipnodes:        files dns
              • else it should be as under:
                • ipnodes:        files nis
          • netmask: /etc/inet/netmasks
          • Router IP : /etc/defaultrouter
          • Dominname : exec domainname command
          • Name service : Check /etc/nsswitch.conf to confirm it is NIS
          • Name server: output of ypwhich command
          • Ip addres of name server : ping -s <nameserver>
          • DNS name server ip address from /etc/resolv.conf

          • Modify exisiting zone

          • Change net settings {removing address or physical attribute of the net will delete both network parameters
            • zonecfg -z zone1 info
            • remove net address=<value> {or remove net physical=<value>}
            • add net
            •    set physical
            •     set address
            • end
          • Some changes need the zone to be rebooted to take effect
            • zoneadm -z zone1 reboot


          If you want to restart initial zone configuration
          • zlogin -S zonename /usr/sbin/sys-unconfig
          • or login to zones (zlogin zonename) , issue sys-unconfig and reboot
          • On Solaris 11, you can configure using the following commnd
            • /usr/sbin/sysconfig unconfigure
          How to specify netmask in containers:
          Why is zone booting command failing as under:

           zoneadm -z zones2 boot
          zoneadm: zone 'zones2': These file-systems are mounted on subdirectories of /zones2/root:
          zoneadm: zone 'zones2':   /zones2/root/var/sadm/install/.door
          zoneadm: zone 'zones2': call to zoneadmd failed
          You do not have the right zones patch installed..... Wait for 10 minutes and issue the command and it will work if you do not want  to install the updated patches


          If you see the following error, login in to the console to view the SCI ....


          root@unknown:~# sysconfig configure
          This program will re-configure your system.
          Do you want to continue (y/[n])? y
          Interactive configuration requested.
          System Configuration Interactive (SCI) tool will be launched on console.
          Since you are currently not logged on console,
          you may not be able to navigate SCI tool.
          Would you like to proceed with re-configuration (y/[n])? y

          How to create a resource pool and bind a project to that pool

          Create Resource Pool
          • Enable the resource pool service
            • svcadm enable system/pools:default
          • Enable dynamic resource pool
            • svcadm enable system/pools/dynamic:default
          • Check if both are enabled
            • svcs \*pool\*
          • Create a processor set named oracle_set with 32 processors
            • poolcfg -c 'create pset oracle_set( uint pset.min=32; uint pset.max=32)'
          • Create a pool named oraclePool
            • poolcfg -c ' create pool oraclePool
          • Associate the pool with processor set
            • poolcfg -c 'associate pool oraclePool (pset oracle_set)'
          •  Display the info
            • poolcfg -c info
          • Commit the changes to /etc/pooladm.cfg
            •  pooladm -c
          • Alternatively, you can save the configuration in a file and invoke pooladm with that file
          Here is an example of configuration file that creates a pool with 8 CPUs in it

          cat sPool:
          create pset rac1_set(uint pset.min=8;uint pset.max=8)
          create pool rac1Pool
          associate pool rac1Pool(pset rac1_set)
          transfer to pset rac1_set(cpu 0;cpu 1 ; cpu 2; cpu 3; cpu 4 ; cpu 5 ; cpu 6; cpu 7)

          Invoke the following command to save current configuration in /etc/pooladm.conf file.

           if that file does not exist
          • pooladm -s
          Execute the following command to execute commands from sPool file
          • poolcfg -f sPool
          • poolcfg -c info
          • pooladm -c
          The following commands can be used to delete the pool:

          cat delPool
          destroy pset rac1_set
          destroy pool rac1Pool
          poolcfg -f delPool

          If poolcfg -c info is not taking the right changes, you may want to flush out current in-memory config and start afresh ...

          pooladm -x # flush current in-memory config
          pooladm -s # blank /etc/pooladm.conf config

          For more info : http://www.brendangregg.com/zones.html


            Bind the oracle project to this pool

            • Set project.pool attribute for oracle project to oraclePool so that oracle project gets binded to oraclePool by default. This implies that all processes starting in this project are bound to the pool automatically
              •  projmod -a -K project.pool=poolname project

            Destroy the processor set and pool set

            • poolcfg -c 'destroy pset oracle_set' /etc/pooladm.conf
            • poolcfg -c 'destroy pool oraclePool'
            • poolcfg -c info
            • pooladm -c
            Bind a process to the resource pool

            The following procedure uses poolbind with the -p option to manually bind a process  to a pool named oraclePool
            • Bind the process named ohare to the resource pool oraclePool
              • # poolbind -p oraclePool <procesid of process to be binded>
            • verify which pool a particular process is binded to
              • $ poolbind -q <process id of binded process)
            Monitor pool and processor set:
            • Execute the following commands
              • poolstat 5
              • poolstat -r pset 5 
            If you cannot find dynamic-resource SMF service (system/pools/dynamic:default ), download dynamic-resource-pools pkg.



            Verify if dynamic-resource-pools package exist on your system or not.
            •  pkg info dynamic-resource-pools
            pkg: info: no packages matching the following patterns you specified are
            installed on the system.  Try specifying -r to query remotely:

                    dynamic-resource-pools


            • pkg info resource-pools
                      Name: system/resource-mgmt/resource-pools
                   Summary: Resource Pools
               Description: core software for resource pools
                  Category: System/Core
                     State: Installed
                 Publisher: solaris
                   Version: 0.5.11
             Build Release: 5.11
                    Branch: 0.175.1.0.0.9.0
            Packaging Date: Mon Feb 06 23:51:31 2012
                      Size: 811.45 kB
                      FMRI: pkg://solaris/system/resource-mgmt/resource-pools@0.5.11,5.11-0.                             175.1.0.0.9.0:20120206T235131Z


            • # pkg search dynamic-resource-pools
            INDEX      ACTION VALUE                                               PACKAGE
            pkg.fmri   set    solaris/system/resource-mgmt/dynamic-resource-pools pkg:/syste                             m/resource-mgmt/dynamic-resource-pools@0.5.11-0.175.1.0.0.9.0


            • # pkg install dynamic-resource-pools
                       Packages to install:  3
                   Create boot environment: No
            Create backup boot environment: No
                        Services to change:  5

            DOWNLOAD                                  PKGS       FILES    XFER (MB)
            Completed                                  3/3   1015/1015    52.5/52.5

            PHASE                                        ACTIONS
            Install Phase                              1374/1374

            PHASE                                          ITEMS
            Package State Update Phase                       3/3
            Image State Update Phase                         2/2


             
            Additional info:
            ttp://www.brendangregg.com/zones.html#resource_cpu0