Tuesday, March 8, 2011

NVIDIA Optimus Technology: Review


A few years ago and again only recently, a select few notebooks hit the scene with "switchable graphics". That is to say, these notebooks are able to manually switch between low-power integrated graphics solutions in the notebook chipset, to more powerful, and higher-performing discrete graphics processors. To enthusiasts, power users, or even somewhat tech savvy consumers, switchable graphics seemed like a no compromise solution.  The IGP could be used to conserve battery life when multimedia performance wasn't necessary, while the discrete GPU was available for more demanding applications.
In practice, however, notebooks with switchable graphics were somewhat cumbersome to use in the real world. In many cases, a physical switch had to be flipped, applications had to be closed, and the system had to be restarted. And to switch back, the process had to be repeated over again. Not to mention, the need to incorporate the switches and the other necessary hardware to support having a pair of GPUs connected to the same set of outputs, added complexity to the notebook's designs, that ODMs had to contend with. Switchable graphics, while great in theory, didn't always provide a great user experience or at least the implementation could have been much cleaner.

Ideally, switchable graphics would be seamless. Launch an application that doesn't require significant GPU resources, and the IGP gets used. Fire up a game though, and the discrete GPU kicks in. Up to this point, a scenario like this simply wasn't available, but NVIDIA aims to change that with the release of their Optimus technology.  

That teaser didn't exactly spell out what Optimus was all about, so we speculated a bit about what NVIDIA had in store. While we were partially correct in our assumption that Optiumus-enabled GPUs are capable of shutting down parts of the GPU while not in use, we didn't realize exactly how much could be disabled. In reality, Optimus turned out to be much more that we thought.
  
Left: NVIDIA's Optimus Graphics Solution - Right: Legacy Design Approach
If you take a look at the high-level design approaches that NVIDIA has detailed above, you'll note that the right-hand slide (the legacy approach) shows a fair bit more complexity for a switchable hybrid graphics infused notebook.  Physically, there are several mux/demux switches that need to be employed in order to couple the discrete GPU over the output traces of the PCB, so it can output to the same connectors that the integrated graphics solution can, when called upon.  In addition to adding design complexity, the approach also degrades signal quality a bit, though whether it is end-user perceptible is another question.  Regardless, this approach is less than optimal (pun intended we suppose) because it requires a hard, physical switch-over from IGP to GPU.  Though this can be achieved, with current gen hotplug / switch technologies and operating systems, the output to the screen will go blank and any applications running that require graphics resources, will need to be shut down to invoke the switch at the software level.  Next take a look at the slide on the left, to see the way NVIDIA has assembled an Optimus reference notebook design, which is significantly less complex.


The NVIDIA Optimus Way:
Doing things the right way, as Mamma once may have said, isn't always the easy way.  In actuality, from a hardware design perspective, NVIDIA's new Optimus design approach is significantly more simplified.  The discrete GPU simply sends its output to the integrated graphics core in the chipset--the IGP acts much like a pass though.  However, it's how this gets done that is the real "magic" that NVIDIA has developed with Optimus.  It's not as simple as just "sending the data along" to the IGP core for display.  Remember, that IGP wants to control the output lines when it's active.  We'll get into how NVIDIA pulls off a bit of trickery on the IGP to achieve this next.  In the mean time, here's a demo of NVIDIA Optimus technology in action that we've put together for your edification and entertainment.


HOW IT WORKS


NVIDIA's Optimus technology is enabled through a combination of custom hardware and software. What NVIDIA is calling the "Optimus Copy Engine" is integrated into all of their current 40nm GeForce 200M and 300M GPUs and upcoming Fermi-architecture based mobile products.
  
NVIDIA Optimus Copy Engine
With previous NVIDIA offerings that featured support for Hybrid SLI, which also allowed an NVIDIA IGP to display the output from a discrete GPU, elements of the GPU's 3D pipeline were used to copy frame buffer data to the IGP. This caused the 3D engine to stall during DMA operations. With the new Optimus Copy Engine, however, the 3D engines are not used and don't stall during the copy process.

As the Copy Engine's name suggests, its sole purpose is to copy frame buffer data from the discrete GPU, over the PCI Express interface to system memory, where it is then output to the display by the IGP. This operation may sound like it introduces significant latency, but we're told it is less than 3ms when operating at 60Hz. 
  
NVIDIA Optimus Software Implementation
On the software side, a few things had to happen to enable Optimus. First and foremost, Windows 7's ability to work with multiple graphics drivers simultaneously was a necessity. Vista only allowed graphics drivers from a single vendor to be installed at any given time. NVIDIA also implemented a few features in their drivers for Optimus. In the slide on the left, you'll see an indicator for the Optimus Routing layer. NVIDIA hasn't disclosed exactly how the routing laying works, but the software essentially detects certain calls an enables the discrete GPU when necessary. In addition, NVIDIA has also implemented application profiles in their driver--similar to SLI profiles. When a application is launched, if its profile recommends the use of the discrete GPU, it is fired up and takes over. While we're on the subject, we should also note, that when the discrete GPU is not being used, it can be completely shut down to a no-power state. Although we didn't see it in person, we're told NVIDIA has actually demoed an Optimus system, where they completely pulled the discrete GPU out of the system when it was not in use. The GPU was put back in, and it fired up when called upon by the Optimus software--all while the OS remained up and running.
NVIDIA has also implemented a new profile distribution system that will keep Optimus application profiles updated, without user intervention. Because many notebook buyers are, shall we say, not so tech savvy, the likelihood that they'd update drivers regularly and keep the profile list up to date was slim. With that in mind, NVIDIA has put mechanisms in place to update Optimus application profiles in the background, much like anti-virus vendors update definitions. Users can also manually add applications to the list or enable the GPU with a simple right click of the shortcut. A context menu gives users the ability to run a particular application using the discrete GPU if they so choose.
POWER CONSUMPTION AND WRAP-UP
NVIDIA's Optimus technology is less about performance and battery life than it is about the user experience. What we mean by this is that a GeForce 220M is going to consume the same power when in use, whether it is in an Optimus enabled notebook or not. And the same can be said about the IGP it's pared to as well.  What Optimus does enable, however, is a seamless switch from a lower-power, IGP enabled state, to a higher performing, GPU enabled one. This seamless switch gives users all of the performance of a discrete GPU when it's needed, with the lower-power benefits of an IGP when it is not.

To show how power is affected over time with Optimus, we ran a simple test with our sample notebooks. In this test, we allowed the machines to idle at the desktop, then we fired up 3DMark06 and it's Canyon Flight graphics test.  After a few seconds we exited 3DMark, and then the machines settle back to idle. The data shows the idle-peak-average power consumption for a notebook running solely on the IGP, solely on the discrete GPU, and finally on the Optimus enabled system
What Optimus nets the end user is low-power operation when the discrete GPU isn't necessary, high-performance operation when it is, with a seamless switch back to low power. The end result is less power consumed over time, without any sacrifice in performance.
NVIDIA's Optimus graphics switching and power saving technology, though a little complex to explain from a design and software standpoint, couldn't be easier to understand and see in practice and function from an end users perspective.  In fact, what NVIDIA has done with the technology enables a level of both functional and design simplicity that is, for us and we're sure notebook consumers to follow, a thing of beauty.  There is a simple elegance here that NVIDIA has enabled with Optimus and it's the way it should have been done a long time ago quite frankly.  Granted, we're sure that our expectations are based on an over-simplification of the level of engineering that NVIDIA poured into Optimus but we're more than happy that this level of seemless functionality for switchable hybrid graphics is finally here.  Thanks to NVIDIA for making it a reality.


Cisco DSL Router PPPoA Configuration with a Static IP Address


Tasks to Perform

  • Design an IP addressing scheme for your private LAN.
  • Configure an IP address and subnet mask on the Cisco DSL Router Ethernet interface.
  • Configure the ATM interface (Asynchronous Digital Subscriber Line (ADSL) interface) of the Cisco DSL Router with an ATM permanent virtual circuit (PVC) and encapsulation.
  • Create and configure the Dialer interface of the Cisco DSL Router for Point-to-Point Protocol over ATM (PPPoA) with a static IP address.
  • For NAT: Configure NAT on the Cisco DSL Router to allow sharing of the static public IP address of the Dialer interface.
    • Optional: NAT Pool, if additional IP addresses have been provided by your ISP.
    • Optional: Static NAT, if Internet users require access to internal servers.
  • Configure each host PC with an IP address, subnet mask, default gateway, and Domain Name System (DNS) server(s).
    Alternatively, if you want the Cisco DSL Router to assign your PC clients' dynamic IP addresses, configure each PC to obtain an IP address and DNS server(s) automatically via DHCP.

Configure

In this section, you are presented with the information to configure the features described in this document.
Note: Use the Command Lookup Tool ( registered customers only) to find more information on the commands used in this document.

Configuration

Cisco DSL Router with a Static IP Address




!--- Comments contain explanations and additional information.


service timestamps debug datetime msec
service timestamps log datetime msec
ip subnet-zero
!

!--- For DHCP:

ip dhcp excluded-address <ip address of ethernet0>
ip dhcp pool <dhcp pool name>
 network <ip network address of ethernet0> <subnet mask>
 default-router <ip address of ethernet0>
 dns-server <ip address of dns server>
!
interface ethernet0
 no shut
 ip address <ip address> <subnet mask>

!--- For NAT:

 ip nat inside
 no ip directed-broadcast
!
interface atm0
 no shut
 no ip address
 no ip directed-broadcast
 no ip mroute-cache
 pvc <vpi/vci>
  encapsulation aal5mux ppp dialer 
  dialer pool-member 1 
 
!--- Common PVC values supported by ISPs are 0/35 or 8/35.
 !--- Confirm your PVC values with your ISP.

!
interface dialer1
 ip address <ip address> subnet mask <subnet mask> 
 no ip directed-broadcast

!--- For NAT:

 ip nat outside
 encapsulation ppp
 dialer pool 1
 ppp chap hostname <username> 
 ppp chap password <password> 
 ppp pap sent-username <username> password <password> 
!

!--- For NAT:

ip nat inside source list 1 interface dialer1 overload

!--- If you have a pool (a range) of public IP addresses provided 
!--- by your ISP, you can use a NAT Pool. Replace 
!--- ip nat inside source list 1 interface dialer1 overload

 
 

!--- with these two configuration statements:
!--- ip nat inside source list 1 pool <nat pool name> overload
!--- ip nat pool <nat pool name> <first ip address> <last ip address> 
!---  netmask <subnet mask>




!--- If Internet users require access to an internal server, you can 
!--- add this static NAT configuration statement:
!--- ip nat inside source static tcp <inside ip address of server> 
{80 or 25} 
!--- <outside well-known ip address of server> {80 or 25} extendable
!--- Note: TCP port 80 (HTTP/web) and TCP port 25 (SMTP/mail) are used 
!--- for this example. You can open other TCP or UDP ports, if needed.

! 
ip classless 
ip route 0.0.0.0 0.0.0.0 dialer1 

!--- For NAT:

access-list 1 permit <ip network address of ethernet0> <wildcard mask>

!--- In this configuration, access-list 1 defines a standard access list 
!--- that permits the addresses that NAT translates. For example, if  
!--- your private IP network is 10.10.10.0, configure 
!--- access-list 1 permit 10.10.10.0 0.0.0.255 in order to allow NAT to
 translate 
!--- packets with source addresses between 10.10.10.0 and 10.10.10.255.

!
end


CISCO DSL Router Configuration : Configuration of RFC1483


Introduction

Your Internet Service Provider (ISP) has assigned an RFC1483 Bridging connection.

Prerequisites

Requirements

There are no specific requirements for this document.

Components Used

This document is not restricted to specific software and hardware versions.

Conventions

Refer to Cisco Technical Tips Conventions for more information on document conventions.

Configure

Important: Before you begin, close all programs on the PC that might be monitoring your COM port. Devices such as PDAs and digital cameras often place programs in the system tray that will render your COM port unusable for configuring your Cisco Digital Subscriber Line (DSL) Router.

Connect the Cisco DSL Router and Your PC

A console connection is made with a rolled cable and connects the console port of the Cisco Digital Subscriber Line (DSL) Router to a COM port on a PC. The console cable that is included with the Cisco DSL Router is a flat light blue cable. For more information on the pinouts of a rolled cable, or the pinouts of an RJ-45 to DB9 converter, refer to Cabling Guide for Console and AUX Ports.
  1. Connect the RJ-45 connector on one end of a Cisco console cable to the console port of the Cisco DSL Router.
  2. Connect the RJ-45 connector at the other end of the console cable to an RJ-45 to DB9 converter.
  3. Connect the DB9 connector to an open COM port on your PC.

Start and Set Up HyperTerminal

Complete these steps:
  1. Start the HyperTerminal program on the PC.
  2. Set up your HyperTerminal session.
    1. Assign a name to your session, and click OK.
    2. From the Connect To window, click Cancel.
    3. From the File menu, click Properties.
    4. From the Properties window, in the Connect Using list, select the COM port where you connect the DB9 end of the console cable.
    5. From the Properties window click Configure and fill in these values:
      • Bits per second: 9600
      • Data bits: 8
      • Parity: None
      • Stop bits: 1
      • Flow Control: None
    6. Click OK.
    7. From the Call menu, click Disconnect.
    8. From the Call menu, click Call.
    9. Press Enter until you see a router prompt on your HyperTerminal screen.

Clear Existing Configurations on the Cisco DSL Router

Complete these steps:
  1. Type enable at the router prompt to enter privileged mode.
    Router>enable
    Router#
    
    !--- The # symbol indicates that you are in privileged mode.
    
    
  2. Clear existing configurations on the router.
    Router#write erase
    
  3. Reload the router so it boots with a blank startup configuration.
    Router#reload
    System configuration has been modified. Save? [yes/no]:no
    Proceed with reload? [confirm]yes
    
    !--- Reloading the router can take a few minutes.
    
    
  4. After the router has reloaded, enter enable mode again.
    Router>enable
    Router#

Configure the Cisco DSL Router

Complete these steps:
  1. Configure service timestamp to properly log and display debug output in the troubleshooting section.
    Router#configure terminal
    Router(config)#service timestamps debug datetime msec
    Router(config)#service timestamps log datetime msec
    Router(config)#end
    
  2. Disable the logging console on your Cisco DSL Router to suppress console messages that may be triggered while you are configuring the router.
    Router#configure terminal
    Router(config)#no logging console
    Router(config)#end
    
  3. Configure a bridge protocol and disable routing on your Cisco DSL Router.
    Router#configure terminal
    Router(config)#no ip routing
    Router(config)#bridge 1 protocol ieee
    Router(config)#end
    
  4. Configure a bridge group on the Cisco DSL Router Ethernet interface.
    Router#configure terminal
    Router(config)#interface ethernet 0
    Router(config-if)#bridge group 1
    Router(config-if)#no shut
    Router(config-if)#end
    
  5. Configure the ATM interface of your Cisco DSL Router with an ATM permanent virtual circuit (PVC), encapsulation type, and bridge group.
    Router#configure terminal
    Router(config)#interface atm 0
    Router(config-if)#bridge-group 1
    Router(config-if)#pvc <vpi/vci>
    Router(config-if-atm-vc)#encapsulation aal5snap
    Router(config-if-atm-vc)#no shut
    Router(config-if-atm-vc)#end
    
  6. Enable the logging console on the Cisco DSL Router, and write all the changes to memory.
    Router#configure terminal
    Router(config)#logging console
    Router(config)#end
    *Jan 1 00:00:00.100: %SYS-5-CONFIG_I: Configured from console by console
    Router#write memory
    Building configuration... [OK]
    Router#

Configuration

This is the configuration that results after you complete the procedures in this document.
Cisco DSL Router with RFC1483 Pure Bridging

!--- Comments contain explanations and additional information.


service timestamps debug datetime msec
service timestamps log datetime msec
!
no ip routing
!
interface ethernet0
 no shut
 no ip directed-broadcast
 bridge-group 1
!
interface atm0
 no shut
 no ip address
 no ip directed-broadcast
 no atm ilmi-keepalive
 pvc <vpi/vci>
  encapsulation aal5snap
 
!--- Common PVC values supported by ISPs are 0/35 or 8/35.
 !--- Confirm your PVC values with your ISP.

 !
 bridge-group 1
!
bridge 1 protocol ieee
!
end   

Verify

Your Cisco DSL Router should now be operational for Asymetric Digital Subscriber Line (ADSL) service. You can issue a show runcommand in order to see the configuration.
Router#show run
Building configuration...
The Output Interpreter Tool ( registered customers only) (OIT) supports certain show commands. Use the OIT to view an analysis of showcommand output.

Configuring a Samba Server

The default configuration file (/etc/samba/smb.conf) allows users to view their home directories as a Samba share. It also shares all printers configured for the system as Samba shared printers. In other words, you can attach a printer to the system and print to it from the Windows machines on your network.

Graphical Configuration

To configure Samba using a graphical interface, use the Samba Server Configuration Tool.

The Samba Server Configuration Tool is a graphical interface for managing Samba shares, users, and basic server settings. It modifies the configuration files in the /etc/samba/ directory. Any changes to these files not made using the application are preserved.

To use this application, you must be running the X Window System, have root privileges, and have the system-config-samba RPM package installed. To start the Samba Server Configuration Tool from the desktop, go to the System (on the Panel) => Administration => Server Settings => Samba or type the command system-config-samba at a shell prompt (for example, in an XTerm or a GNOME terminal).


Note --

The Samba Server Configuration Tool does not display shared printers or the default stanza that allows users to view their own home directories on the Samba server.

Configuring Server Settings ::--

The first step in configuring a Samba server is to configure the basic settings for the server and a few security options. After starting the application, select Preferences => Server Settings from the pulldown menu. The Basic tab is displayed as shown.


On the Basic tab, specify which workgroup the computer should be in as well as a brief description of the computer. They correspond to the workgroup and server string options in smb.conf.


The Security tab contains the following options:

Authentication Mode — This corresponds to the security option. Select one of the following types of authentication.

ADS — The Samba server acts as a domain member in an Active Directory Domain (ADS) realm. For this option, Kerberos must be installed and configured on the server, and Samba must become a member of the ADS realm using the net utility, which is part of the samba-client package. Refer to the net man page for details. This option does not configure Samba to be an ADS Controller. Specify the realm of the Kerberos server in the Kerberos Realm field.
Note :: --
The Kerberos Realm field must be supplied in all uppercase letters, such as EXAMPLE.COM.
Using a Samba server as a domain member in an ADS realm assumes proper configuration of Kerberos, including the /etc/krb5.conf file.

Domain — The Samba server relies on a Windows NT Primary or Backup Domain Controller to verify the user. The server passes the username and password to the Controller and waits for it to return. Specify the NetBIOS name of the Primary or Backup Domain Controller in the Authentication Server field.

The Encrypted Passwords option must be set to Yes if this is selected.

Server — The Samba server tries to verify the username and password combination by passing them to another Samba server. If it can not, the server tries to verify using the user authentication mode. Specify the NetBIOS name of the other Samba server in the Authentication Server field.

Share — Samba users do not have to enter a username and password combination on a per Samba server basis. They are not prompted for a username and password until they try to connect to a specific shared directory from a Samba server.

User — (Default) Samba users must provide a valid username and password on a per Samba server basis. Select this option if you want the Windows Username option to work. Refer to Section 19.4.1.2, “Managing Samba Users” for details.

Encrypt Passwords — This option must be enabled if the clients are connecting from a system with Windows 98, Windows NT 4.0 with Service Pack 3, or other more recent versions of Microsoft Windows. The passwords are transfered between the server and the client in an encrypted format instead of as a plain-text word that can be intercepted. This corresponds to the encrypted passwords option. Refer to Section 19.4.3, “Encrypted Passwords” for more information about encrypted Samba passwords.

Guest Account — When users or guest users log into a Samba server, they must be mapped to a valid user on the server. Select one of the existing usernames on the system to be the guest Samba account. When guests log in to the Samba server, they have the same privileges as this user. This corresponds to the guest account option.

After clicking OK, the changes are written to the configuration file and the daemon is restarted; thus, the changes take effect immediately

Managing Samba Users
The Samba Server Configuration Tool requires that an existing user account be active on the system acting as the Samba server before a Samba user can be added. The Samba user is associated with the existing user account.

To add a Samba user, select Preferences => Samba Users from the pulldown menu, and click the Add User button. In the Create New Samba User window select a Unix Username from the list of existing users on the local system.

If the user has a different username on a Windows machine and needs to log into the Samba server from the Windows machine, specify that Windows username in the Windows Username field. The Authentication Mode on the Security tab of the Server Settings preferences must be set to User for this option to work.

Also, configure a Samba Password for the Samba User and confirm it by typing it again. Even if you opt to use encrypted passwords for Samba, it is recommended that the Samba passwords for all users are different from their system passwords.

To edit an existing user, select the user from the list, and click Edit User. To delete an existing Samba user, select the user, and click the Delete User button. Deleting a Samba user does not delete the associated system user account.

The users are modified immediately after clicking the OK button.


Adding a Share

To create a Samba share, click the Add button from the main Samba configuration window.


The Basic tab configures the following options:

Directory — The directory to share via Samba. The directory must exist before it can be entered here.


Share name — The actual name of the share that is seen from remote machines. By default, it is the same value as Directory, but can be configured.

Descriptions — A brief description of the share.

Writable — Enables users to read and write to the shared directory

Visible — Grants read-only rights to users for the shared directory.

On the Access tab, select whether to allow only specified users to access the share or whether to allow all Samba users to access the share. If you select to allow access to specific users, select the users from the list of available Samba users.

The share is added immediately after clicking OK.


THIS IS ONE OF thePROCESS also....in linux :::---