Posting Terbaru

Sabtu, 30 Agustus 2008

Managing Multi-Core Projects, Part 3: Multi-Core Development in the Enterprise

Tidak ada komentar :
Part 3 of our series on managing multi-core development focuses on finding parallelism in service-oriented systems that will come after the client-server era. Multi-core means opportunities for a better customer experience—if you take the right perspective.
There are many different ways to look at the advantages of multi-core processors, so as you watch the rollout of quad-core processors this year you need to make sure that you keep the pair of glasses on that gives you just the right perspective on them. While it's true that quad-core will mean a more efficient data center, more flops per watt, and more transactions per second per square foot, what that means isn't the same to everybody.

For an application or service development manager, those particular metrics are examples of thinking from the wrong perspective. That's because for a computer center manager, it's all about efficiency, and that means maximizing throughput. But for a development manager, it has to be all about customer experience, and that means minimizing latency. Multi-core processors can provide the processing power to keep up with customer demands, but only to the extent that you can apply parallel programming to build faster-responding services and applications.

SOA and grids represent a kind of "macro concurrency," concurrency expressed in business services or compute nodes. Multi-core represents an opportunity for "micro concurrency," which brings parallelism down to a single server or on a single node. You'll need to take advantage of this low-level parallelism to get the most performance out of each transaction and out of the overall system.

In the brave new world of SOA, Web 2.0, and SaaS, how do you make use of multi-core servers to deliver the best customer experience? For each of these architectures, performance depends on efficient communication among a set of loosely-coupled services. It's in managing that communication overhead, in minimizing I/O latency as well as maximizing compute performance, that the new multi-core servers will have the greatest effect.

Two Kinds of Latency
Take the trendiest of trends, a Web 2.0 mashup, as an example. Say you build a Web application that combines data from several sources and provides an integrated dashboard, with some visualization tools. In addition to providing your customers with new capability, you've shifted the burden of page assembly from the clients to your new service.

Depending on the kinds of data manipulation required, combining data in this way can be data intensive, I/O intensive, or both. The mashup can't respond any faster than the services we're drawing from, so the slowest of these determines our minimum latency. What we need to do is to minimize both compute latency and the I/O latency of concurrent communication with other services. We can address both kinds of latency with threading, using data decomposition to structure compute threads and functional decomposition to structure I/O threads.

If the service is calculation intensive, look for parallel segments that can be split across threads using data decomposition and thread pools. Use asynchronous messaging to minimize the impact of I/O on overall latency. At a high level, proper I/O threading for interconnected services means making the process as asynchronous as possible and designing the service so that the main processing thread continues to run with minimal blocking on I/O.

At a low level, and where I/O performance is critical—in communication between nodes of a grid, for example—threading can reduce I/O latency by increasing the efficiency of messaging. Messaging is an abstraction that makes development of parallel programs easier, but a poor messaging library implementation can doom performance with excessive consumption of memory and memory bandwidth. It takes careful threading and a good API to minimize latency in getting the message off the network and into memory that the handling thread can access.

When working with a third-party messaging library, it’s hard to gauge efficiency unless you can run benchmarks. As a starting point, look for asynchronous messaging when comparing libraries.

When you thread for data parallelism, you can evaluate the result of the parallel computation and develop confidence in the correctness of your implementation. With functional decomposition for I/O concurrency, executing services concurrently, correctness is just as important, but more difficult to evaluate. You'll want to schedule significant test time early in the development cycle, with simulated services, so you can work out bugs in I/O threads before introducing dependencies on real online services.

Thread pools are a familiar part of any server system. Thread pools reduce thread management overhead, balancing the time impact of expensive thread creation with the memory impact of maintaining idle threads. Thread pools should be considered in any multithreaded design, including those for multi-core systems.

Where possible, take advantage of thread pool mechanisms provided by the platform (by the .NET CLR or by OpenMP, for example, or the Java 5 ThreadPoolExecutor). On .NET, using the CLR thread pool can provide a significant performance advantage to managed code versus unmanaged code using Win32 threads. The advantage can be enough that, contrary to what you might expect, a threaded C# application can be faster than an equivalent C++ implementation.

Getting There
The next round of high-end servers is going to be based on multi-core processors, so it's important to start thinking about how multi-core affects your development process now. Whether you're updating single-threaded legacy J2EE code or starting a new service development project from scratch, work out your multi-core strategy at the very start, before you even get into planning the details of the project itself.

Choosing the right approach starts with recognizing where you are, in terms of both the code you're starting with and the threading experience and expertise of your team. If your team has little experience, reduce the scope of the project by paring features to an absolute minimum. Forget the fine details and focus on major functionality. Find the shortest path through development and get the project to market, or into the hands of an early-adopter, as quickly as you can. In this way, you'll get the product out the door and begin to develop some threading expertise throughout your team. Because it's a small project, you'll also minimize the impact of the almost inevitable schedule slippage that comes with learning new development practices, and have an opportunity to improve your own scheduling skills for future multithreaded projects.

The minimal project approach can be applied to performance improvements of single-threaded legacy code as well as to new development efforts. With legacy code, you'll also need to plan time up front to explore how threading for data or functional decomposition might better performance. Tools such as Intel's VTune can help you find serial sections that might benefit from parallelism. The trend to more core and less clock makes threading so much more critical to performance that you might revisit threaded approaches that you'd considered not worth the development effort on single-core, single-processor servers.

With a code base that's already threaded, focus on incremental improvements. Again, multi-core increases the value of threading when measured against other performance strategies. Look for other areas that could be threaded, ways to reduce message overhead, or more highly-parallel data processing algorithms. Tools can help here, too, in particular profilers like Intel Thread Profiler.

Regardless of where you're starting from, you'll get the greatest advantage from multi-core if you can create an emphasis on threading and parallelism throughout the project lifecycle. That means not just planning for multi-core, but developing an integrated approach where the parallelism model that's adopted early in the process is improved through feedback from testing and tuning.

In our next installment, we'll push further for an integrated approach to parallelism. Then we'll break down the development cycle for enterprise software projects and discuss the steps you can take to in each phase to ensure the best multi-core performance (Internet.COm)

Minggu, 24 Agustus 2008

Uninstall Oracle 10g di Windows XP

Tidak ada komentar :
Oracle merupakan perangkat lunak basis data relasional yang terdiri dari kumpulan data dalam suatu sistem manajemen basis data RDBMS. Perusahaan perangkat lunak Oracle memasarkan jenis basis data ini untuk bermacam-macam aplikasi yang bisa berjalan pada banyak jenis dan merk perangkat keras komputer (platform).

Beberapa kali saya belajar menginstall Oracle di sistem operasi Windows XP professional.
Meski hanya tinggal klik sana - klik sini namun rupanya belum berhasil juga menginstall-nya. Kegagalan tersebut disebabkan oleh software saya yang sudah rusak mungkin, sebab saya menggunakan software kantor yaitu Oracle 9i. Hal ini saya ketahui dari proses instalasinya yang cukup lama dan sepertinya tidak jalan prosesnya sehingga harus saya hentikan karena tidak mau menunggu lama.

Kemudian saya belajar Oracle 10g XE (Express Edition) dengan membeli bukunya di Gramedia Surabaya sekitar bulan Februari lalu. Everything is ok, semuanya berjalan semudah membaca bukunya. Namun saya tidak puas dengan yang ada di buku tersebut, sebab Orcale yang dipakai adalah Oracle 10g Express Edition yang notabene ada beberapa tools yang tidak diikutkan seperti di Oracle 10g. Oleh sebab itulah saya berkeinginan untuk pindah ke Oracle 10g, dan akhirnya kesampaian.

Rupanya proses install Oracle 10g saya belum berhasil, karena kurang begitu tahu mana yang harus di centang atau diinclude-kan dalam instalasi tersebut. Kemudian membaca tutorial diinternet, namun rupanya ada yang masih kurang sehingga waktu Oracle-nya dijalankan ternyata belum bisa. Karena tidak jalan itulah saya install ulang, namun installasi yang lama harus saya bersihkan agar tidak terjadi konflik saat instalasi software yang baru. Beginilah cara uninstall software Oracle 10g yang saya lakukan.

1. Uninstall software Oracle 10g lewat Control panel : Control panel -> Add/Or Remove Program -> Remove Oracle 10g

2. Matikan servis Oracle 10g : Run -> services.msc -> Matikan seluruh servise Oracle 10g

3. Hapus seluruh registry di regedit : Run -> regedit -> Hapus file berikut:

- HKEY_CURRENT_USER\Software\Oracle
- HKEY_LOCAL_MACHINE \ SYSTEM\CurrentControlSet \ Services \ OracleDBConsoleorcl
- HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ OracleJobSchedulerORCL
- HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ OracleOraDb10g_home1iSQL*Plus
- HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ OracleOraDb10g_home1SNMPPeerEncapsulator
- HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ OracleOraDb10g_home1SNMPPeerMasterAgent
- HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ OracleOraDb10g_home1TNSListener
- HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ OracleServiceORCL

4. Restart komputer.

5. Hapus File dan directory Oracle 10g tempat instalasi Oracle.

6. Tidak lupa file yang ada di direktori C:\Program Files\Oracle juga perlu dihapus loh :)

Dengan demikian, kita bisa menginstall Oracle yang baru. Akhirnya saya bisa mulai belajar Oracle dengan panduan buku dari Oracle University, namun pake bahasa Inggris. Tapi saya yakin bahwa saya bisa, Amin. Semoga saja :)

Kamis, 07 Agustus 2008

Cisco Shows No Signs of Slowing

Tidak ada komentar :
Strong quarterly results from Cisco Systems (NASDAQ: CSCO) and Juniper Networks (NASDAQ: JNPR) suggest that the networking market is weathering the economic downturn well.

Cisco last night became the latest in the space to post better than expected results, coming on the heels of Juniper's strong results last month.

Cisco also said the current downturn may be shorter than feared, with the economy beginning to pick up early next year.

The networking giant's July quarter sales grew a better than expected 10 percent to $10.4 billion, and earnings of 40 cents a share were a penny better than analysts anticipated.

The critical U.S. enterprise market grew 13 percent, more than double the previous quarter's performance. Routing and advanced technologies sales were particularly strong, but Cisco said service provider spending remains mixed.

The company forecast revenue growth of 8 to 8.5 percent for the next two quarters, slightly lower than expected, but comments from CEO John Chambers that the downturn will likely be a "relatively short challenge going forward" cheered investors worried about a prolonged downturn.
Cisco also maintained its long-term growth projection of 12 to 17 percent.
Cisco shares rose 6 percent in midday trading today.


Article adapted from Internet News

Senin, 04 Agustus 2008

Source Code Visual Basic

Tidak ada komentar :
bagi rekan - rekannya yang sedang belajar bahasa pemrograman visual basic sedikit saya berikan contoh source code yang saya kumpulkan dari internet tentunya. silahkan download dibawha ini :

http://www.4shared.com/file/56111714/2f73c786/Barang.html

http://www.4shared.com/file/56112084/e94bc5a4/Deposito.html

http://www.4shared.com/file/47776197/d43d45a8/MyReport.html

Semoga bermanfaat

Data Input Via Forms

Tidak ada komentar :
Now that we’ve created the relational model, tables and relationships for the Patrick’s Widgets database, we’re off to a great start! At this point, you have a fully functional database and we’ll start adding the bells and whistles that make it user-friendly.

Our first step is to improve the data entry process. If you’ve been experimenting with Microsoft Access as we’ve built the database, you probably noticed that you may add data to the tables in the datasheet view by simply clicking into the blank row at the bottom of the table and entering data that complies with any table constraints. This process will certainly allow you to populate your database, but it’s definitely not user friendly! Imagine asking a salesperson to go through this process every time they signed up a new client!
Fortunately, Access provides a much more user-friendly data entry technique through the use of forms. If you recall from the Patrick’s Widgets scenario, one of our requirements was to add forms that allow the sales team to add, modify and view information in the database. We’ll begin by creating a simple form that allows us to work with the Customers table. Here’s the step-by-step process:
Open the Patrick’s Widgets database.
Choose the Forms tab on the database menu.
Double-click “Create form by using wizard.”
Use the “>>” button to select all of the fields in the table.
Click the Next button to continue.
Choose the form layout that you’d like. Justified is a good, attractive starting point, but each layout has its pros and cons. You’ll need to pick the most appropriate layout for your environment. Remember, this is just a starting point and you may modify the actual form appearance later on in the process.
Click the Next button to continue.
Choose a style and click the Next button to continue.
Give the form a title and then choose the appropriate radio button to either open the form in data entry mode or layout mode. Click the Finish button to generate your form.
A sample of the resulting form is shown in the figure above. Once you’ve created the form, you may interact with it as you wish. The layout view allows you to customize the appearance of specific fields and the form itself. The data entry view allows you to interact with the form. You may use the “>” and “<” buttons to move forward and backward through the recordset while the “>*” button automatically creates a new record at the end of the current recordset.

Now that you’ve created this first form, go ahead and create forms that assist with the data entry for the remaining tables in the database!

Create by : Mike Capple