Sunday, July 19, 2009

HAT -- The Java Heap Analysis Tool

Explanations and examples could found here

Thursday, July 9, 2009

Tweaking hard disk on Linux

 
hdparm -Tt /dev/hda

/dev/hda:
Timing buffer-cache reads: 128 MB in 1.34 seconds =95.52 MB/sec
Timing buffered disk reads: 64 MB in 17.86 seconds = 3.58 MB/sec

hdparm /dev/hda

/dev/hda:
multcount = 0 (off)
I/O support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 0 (off)
keepsettings = 0 (off)
nowerr = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 1870/255/63, sectors = 30043440, start = 0

  1. multcount: Short for multiple sector count. This controls how many sectors are fetched from the disk in a single I/O interrupt. Almost all modern IDE drives support this. The man page claims: when this feature is enabled, it typically reduces operating system overhead for disk I/O by 30-50%. On many systems, it also provides increased data throughput of anywhere from 5% to 50%.
  2. I/O support: This is a big one. This flag controls how data is passed from the PCI bus to the controller. Almost all modern controller chipsets support mode 3, or 32-bit mode w/sync. Some even support 32-bit async. Turning this on will almost certainly double your throughput (see below.)
  3. unmaskirq: Turning this on will allow Linux to unmask other interrupts while processing a disk interrupt. What does that mean? It lets Linux attend to other interrupt-related tasks (i.e., network traffic) while waiting for your disk to return with the data it asked for. It should improve overall system response time, but be warned: Not all hardware configurations will be able to handle it. See the manpage.
  4. using_dma: DMA can be a tricky business. If you can get your controller and drive using a DMA mode, do it. But I have seen more than one machine hang while playing with this option.

 
hdparm -X66 -d1 -u1 -m16 -c3 /dev/hda:
setting 32-bit I/O support flag to 3
setting multcount to 16
setting unmaskirq to 1 (on)
setting using_dma to 1 (on)
setting xfermode to 66 (UltraDMA mode2)
multcount = 16 (on)
I/O support = 3 (32-bit w/sync)
unmaskirq = 1 (on)
using_dma = 1 (on)

hdparm -tT /dev/hda

/dev/hda:
Timing buffer-cache reads: 128 MB in 1.43 seconds = 89.51 MB/sec
Timing buffered disk reads: 64 MB in 3.18 seconds = 20.13 MB/sec

Monday, July 6, 2009

Semantic Applications For Web

Scaling Hibernate

http://www.infoq.com/presentations/Scaling-Hibernate-Emmanuel-Bernard-Max-Ross

Saturday, July 4, 2009

An Eclipse 3.5 Galileo is here !

An Eclipse Galileo 3.5

What's new in the latest version of the open source multipurpose IDE and application platform

Galileo is the simultaneous release of 33 major Eclipse projects. The Eclipse Foundation states that the Galileo release train consists of 33 projects. However, some are subprojects that are rolled up into projects, and not all projects are highlighted in the Eclipse Foundation's marketing push. Regardless, Galileo represents the largest single release of new technology to date.

The important thing to remember about Galileo in particular and Eclipse release trains in general is that even though it's a simultaneous release, it doesn't mean these projects are unified. Each project is a separate open source project, operating with its own project leadership, its own committers, and its own development plan. The release train concept is designed to provide a transparent and predictable development cycle.

Get Galileo

There are two main ways to get Galileo. The first — and recommended — way is to just grab a package relevant to you. The other way to get Galileo is to use an update site.

Packages

Go to the Eclipse Galileo Packages site. The packages site contains nine pre-bundled versions of Galileo specific for your needs.

Galileo update site

To get Galileo using an update site, download the Eclipse V3.5 SDK. Once this is done, you can launch Eclipse and access the software-update mechanism via Help > Software Updates (see Figure 2). Enter the proper Galileo update site information, if it isn't already available as the Galileo Discovery Site. Once you are connected to the Galileo update site, you should see the list of available features that are part of the Galileo release train. It's as simple as that. Once you're connected, you can simply choose what features to install into your Eclipse.


Figure 2. Software updates


The projects

The Eclipse ecosystem is a large and sometimes intimidating place. About 100 projects are being overseen by the Eclipse Foundation, and the Galileo release only represents a snapshot of that. The Galileo release train showcases Eclipse technology and helps adopters integrate Eclipse technology into their products. For more information about the Galileo projects, see the links below.


ProjectSynopsisWeb site
Accessibility Tools Framework (ACTF)Build applications and content for people with disabilitieshttp://www.eclipse.org/actf/
Business Intelligence and Reporting Tools (BIRT)Generate reportshttp://www.eclipse.org/birt
C/C++ Development Tooling (CDT)Code C/C++http://www.eclipse.org/cdt
Data Tools Platform (DTP)Extensible frameworks and toolshttp://www.eclipse.org/datatools/
Eclipse Modeling Framework (EMF)Modeling framework and code generation facilityhttp://www.eclipse.org/modeling/emf/
Eclipse Packaging ProjectCreate, download, and install packageshttp://www.eclipse.org/epp/
Eclipse PlatformCore frameworks and serviceshttp://www.eclipse.org/platform/
EquinoxImplementation of the OSGi R4 core framework spechttp://www.eclipse.org/equinox/
Graphical Editor Framework (GEF)Develop graphical applicationshttp://www.eclipse.org/gef/
Graphical Modeling Framework (GMF)Develop graphical editorshttp://www.eclipse.org/gmf/
Java™ Workflow Tooling (JWT)Toolset for workflows and processes from design to monitoringhttp://www.eclipse.org/jwt/
Java Development Tools (JDT)Develop Java applicationshttp://www.eclipse.org/jdt/
Java Emitter Templates (M2T JET)Generate textual artifacts from modelshttp://www.eclipse.org/modeling/m2t/
Memory AnalyzerFind memory leaks and reduce memory consumptionhttp://www.eclipse.org/mat/
Mobile Tools for Java (MTJ)Extend Eclipse frameworks to support mobile device Java application developmenthttp://www.eclipse.org/dsdp/mtj/
MylynMonitors your work to make the GUI relevant to what you're doinghttp://www.eclipse.org/mylyn/
PHP Development Tools (PDT)Code PHPhttp://www.eclipse.org/pdt/
Rich Ajax Platform (RAP)Code Ajaxhttp://www.eclipse.org/rap/
SCA ToolsTools for the Service Component Architecture standardhttp://www.eclipse.org/stp/sca/
SOA ToolsCode Service-Oriented Architecture appshttp://www.eclipse.org/stp/
SwordfishExtensible SOA frameworkhttp://www.eclipse.org/swordfish/
Target ManagementConfigure and manage remote systemshttp://www.eclipse.org/dsdp/tm/
Test and Performance Tools Platform Project (TPTP)Tooling for profiling and testing applicationshttp://www.eclipse.org/tptp/
Textual Modeling Framework (Xtext)Code external textual DSLshttp://www.eclipse.org/modeling/tmf/
Tools for mobile Linux (TmL)Code mobile applicationshttp://www.eclipse.org/dsdp/tml/
Web Tools Platform (WTP)Code Web and Java EE applicationshttp://www.eclipse.org/webtools/

Google Developer Days Brazil 2009 - Keynote

Tuesday, June 30, 2009

Neo4j a graph database

Neo4j is a graph database. It is an embedded, disk-based, fully transactional Java persistence engine that stores data structured in graphs rather than in tables. A graph (mathematical lingo for a network) is a flexible data structure that allows a more agile and rapid style of development.

According Emil Eifrem
the neo4j database outperforms relational backends with >1000x for many increasingly important use cases.